Comandos Personalizados do Vim, coloque strings com os comandos padrão do Vim

1

Eu estou tentando fazer um novo comando personalizado no meu .vimrc, para que quando eu digitar

:Hcom

o comando converterá o texto da linha atual em um comentário HTML.

Como exemplo:

abcdef
:Hcom
<!-- abcdef -->


Eu não quero usar uma macro nem um mapeamento. A macro equivalente seria

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

Não consigo descobrir como fazer isso. É de todo possível sem um script? Eu tentei o seguinte, com e sem fugas, sem sucesso:

:command Hcom put='0i<\!-- ^[A -->^['
    
por Akitirija 11.01.2018 / 21:23

1 resposta

1

O comando :put insere o conteúdo do registro (ou, como caso especial que você está usando aqui, o resultado da avaliação de uma expressão, aqui: uma string estática) literalmente no buffer. Não pode ser usado para reproduzir comandos.

Como seus comandos são normais e inserem mapeamentos de modo, você pode usar :normal! para executá-los. Um mapeamento de chaves os levaria diretamente para o lado direito; como o trabalho :command s personalizado no modo Ex, você precisa de :normal como tradutor do Ex para o modo normal.

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

O ^[ incorporado deve ser caracteres de escape literais; Eu recomendaria escrevê-los no :help key-notation ; você então precisa de aspas duplas e :execute para interpretar a string:

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

Antes de investir muito mais energia em ajustes nesse comando, observe que há vários plug-ins de comentários que fazem isso muito bem, e eles são genéricos (e geralmente extensíveis) para que funcionem em qualquer tipo de arquivo:

por 12.01.2018 / 12:44

Tags