Jak mogę dodać mapowanie w trybie ex w Vimie?


4

Właśnie stworzyłem funkcję Vima, aby zastąpić podziały wiersza Windows uniksowymi. Teraz chcę móc pisać :linebreaki uruchamiać. Oto moja pierwsza próba:

function UseUnixLineBreaks()
  :%s/^M/\r/g
endfunction

cmap linebreak :call UseUnixLineBreaks()<CR>

(Nawiasem mówiąc, ^Mjest to znak kontrolny - wpisz go za pomocą Ctrl+v Ctrl+m)

Kiedy próbuję uruchomić to przez wpisanie :linebreak, działa, ale zachowuje się dziwnie: każda litera polecenia pojawia się w sekwencji, usuwając poprzednią. Na przykład widzę :lwtedy :i, potem :nitd. Kiedy wpisuję ostatnią literę, uruchamia się ona natychmiast.

Chcę, aby pojawiło się całe polecenie, dzięki czemu mogę zobaczyć, że wpisałem je poprawnie, a następnie naciśnij klawisz Enter, aby je uruchomić.

Jak mogę to zrobić?

Odpowiedzi:


5

Domyśliłam się

Najwyraźniej to, czego chcę, to wcale nie mapowanie, ale polecenie. Tak więc ostatni wiersz należy zastąpić:

command Linebreak call UseUnixLineBreaks()

Zwróć uwagę na wielką literę „L” - polecenia zdefiniowane przez użytkownika muszą zaczynać się wielką literą. Zobaczyć :help command.


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.