Użyj backspace, aby zmodyfikować bieżące polecenie w trybie normalnym?

9

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>0dkzamiast naciskać klawisz Escape i ponowić polecenie?

Pytanie poboczne: Czy istnieje termin Vima dla struktury danych, która przechowuje bieżące polecenie przed jego zatwierdzeniem?

HellaMad
źródło
1
Prawdopodobnie można o to poprosić jako funkcję w nowszych wersjach!
SibiCoder
3
Powiązane: vi.stackexchange.com/questions/570/…
SibiCoder
4
AFAIK nie jest możliwe - ale ponieważ te sekwencje są krótkie, nie jestem pewien, jaki zysk osiągnęłaby taka funkcja. Kiedy musisz powtórzyć całą sekwencję, przynajmniej jesteś „zmuszony” do jej powtarzania, dopóki nie popełnisz takich błędów;) (tj. - powtarzanie postaci buduje! Kalambur przeznaczony).
VanLaser,
1
@VanLaser Najgorszym koszmarem Vimmera jest „zmuszenie” do powtórzenia czegoś;) Poza tym jestem do bani pisania i mam pustą klawiaturę, więc nierzadko zdarza mi się zepsuć polecenie 256 razy, zanim zrobię to poprawnie.
HellaMad
4
Co może pójść nie tak, gdy zły pisarz używa pustej klawiatury?
romainl

Odpowiedzi:

3

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 :normalpolecenia. Wydłuża to proces, ale na przykład, jeśli wpiszesz :normal 10jw linii poleceń, Vim wykona się 10jtak, jakbyś wpisał go w trybie normalnym. (Patrz :h :normal)

Możesz również dodać te linie do .vimrc:

nnoremap <F4> :call NormalModeCommand()<CR>

function! NormalModeCommand()
    let command = input("Normal command: ")
    execute "normal " . command
endfunction

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ć.

statox
źródło