Czasami podczas wprowadzania polecenia w trybie normalnym możesz napisać literówkę, na przykład jeśli zamierzam pisać 10dk
, mogę przypadkowo zacząć pisać 19d
.
Ponieważ polecenie nie zostało jeszcze zakończone / zatwierdzone, czy można usunąć niepoprawne klucze za pomocą backspace, jako takiego: 19d<backspace><backspace>0dk
zamiast naciskać klawisz Escape i ponowić polecenie?
Pytanie poboczne: Czy istnieje termin Vima dla struktury danych, która przechowuje bieżące polecenie przed jego zatwierdzeniem?
vimrc
normal-mode
command-history
HellaMad
źródło
źródło
Odpowiedzi:
Nie ma na to sposobu i jest normalne, że nie ma: polecenia trybu normalnego są na ogół dość krótkie i można je anulować, Escjeśli je zepsujesz.
Możliwym obejściem byłoby użycie
:normal
polecenia. Wydłuża to proces, ale na przykład, jeśli wpiszesz:normal 10j
w linii poleceń, Vim wykona się10j
tak, jakbyś wpisał go w trybie normalnym. (Patrz:h :normal
)Możesz również dodać te linie do
.vimrc
:Tworzą mapowanie (tutaj, F4ale używaj, co chcesz), które wywoła funkcję
NormalModeCommand()
.Ta funkcja pozwala wpisać ciąg znaków w wierszu polecenia, a następnie wykonać ciąg wpisany jako polecenie trybu normalnego. Podczas wpisywania ciągu w wierszu polecenia możesz go poprawić jak każde inne polecenie. Oczywiście nie jest to idealne, ale po raz kolejny Vim nie powinien tego robić.
źródło