4

Я только что создал функцию Vim для замены разрывов строк в Windows на Unix. Теперь я хочу набрать :linebreak и запустить его. Вот моя первая попытка:

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

cmap linebreak :call UseUnixLineBreaks()<CR>

(Кстати, этот ^M является управляющим символом - наберите его с помощью Ctrl+v Ctrl+m)

Когда я пытаюсь запустить это, набрав :linebreak , он запускается, но ведет себя странно: каждая буква команды появляется в последовательности, стирая предыдущую. Например, я вижу :l , затем :i , затем :n и т.д. Когда я набираю последнюю букву, она запускается немедленно.

Я хочу, чтобы появилась вся команда, чтобы я мог видеть, что набрал ее правильно, затем нажмите Enter, чтобы запустить ее.

Как я могу это сделать?

2 ответа2

5

Догадаться

Очевидно, что я хочу не отображение вообще, а команда. Итак, последняя строка должна быть заменена на:

command Linebreak call UseUnixLineBreaks()

Обратите внимание на заглавную букву "L" - пользовательские команды должны начинаться с заглавной буквы. Смотрите :help command .

2

Вот как работают отображения: замена происходит после ввода всего отображения.

Чтобы создать псевдонимы команд, попробуйте скрипт cmdalias.vim .

По соответствующей теме :setl ff=unix.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .