Como posso adicionar um mapeamento ex-mode no Vim?

4

Acabei de criar uma função do Vim para substituir as quebras de linha do Windows pelas do Unix. Agora quero poder digitar :linebreak e executá-lo. Aqui está minha primeira tentativa:

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

cmap linebreak :call UseUnixLineBreaks()<CR>

(A propósito, que ^M é um caractere de controle - digite com Ctrl+v Ctrl+m )

Quando tento executar isso digitando :linebreak , ele é executado, mas se comporta de forma estranha: cada letra do comando aparece em seqüência, apagando a anterior. Por exemplo, vejo :l , depois :i , depois :n , etc. Quando digito a última letra, ela é executada imediatamente.

Eu quero que o comando inteiro apareça, para que eu possa ver que eu digitei corretamente e pressione enter para executá-lo.

Como posso fazer isso?

    
por Nathan Long 21.09.2011 / 20:41

2 respostas

5

Descobriu

Aparentemente, o que eu quero não é um mapeamento, mas um comando. Então, a última linha deve ser substituída por:

command Linebreak call UseUnixLineBreaks()

Observe que a maiúscula "L" - comandos definidos pelo usuário devem começar com uma letra maiúscula. Veja :help command .

    
por 21.09.2011 / 21:15
2

É assim que os mapeamentos funcionam: a substituição ocorre após todo o mapeamento é inserido.

Para criar aliases de comando, experimente o script cmdalias.vim .

Em uma nota relacionada, :setl ff=unix .

    
por 21.09.2011 / 21:02

Tags