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

Nathan Long
źródło

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.

Nathan Long
źródło
2

Tak działają mapowania: zamiana następuje po wprowadzeniu całego mapowania.

Aby utworzyć aliasy poleceń, wypróbuj skrypt cmdalias.vim .

Na powiązana uwaga :setl ff=unix.

grawitacja
źródło