1

Я пытаюсь создать новую пользовательскую команду в моем .vimrc, чтобы при вводе

:Hcom

команда преобразует текст текущей строки в комментарий HTML.

В качестве примера:

abcdef
:Hcom
<!-- abcdef -->


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

let @h = '0i<\!-- ^[A -->^['

Я не могу узнать, как это сделать. Это вообще возможно без сценария? Я попробовал следующее, с побегами и без них, но безуспешно:

:command Hcom put='0i<\!-- ^[A -->^['

1 ответ1

1

Команда :put вставляет содержимое регистра (или, в качестве особого случая, который вы здесь используете, результат вычисления выражения, здесь: статическая строка) буквально в буфер. Его нельзя использовать для воспроизведения команд.

Поскольку ваши команды нормальны и отображаются режимы вставки, вы можете использовать :normal! выполнить их. Сопоставление клавиш будет непосредственно принимать их на правой стороне; как обычно :command работают в режиме Ex, вам нужно :normal переводчик из Ex в обычный режим.

:command! Hcom normal! 0i<!-- ^[A -->^[

Встроенный ^[ должен быть буквальными символами Escape; Я бы порекомендовал написать их в :help key-notation ; тогда вам нужны двойные кавычки и :execute для интерпретации строки:

:command! Hcom execute "normal! 0i<!-- \<Esc>A -->\<Esc>"

Прежде чем вкладывать гораздо больше энергии в настройку этой команды, обратите внимание, что есть несколько плагинов для комментариев, которые делают это очень хорошо, и они являются общими (и часто расширяемыми), поэтому они работают для любого типа файла:

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