Come posso aggiungere una mappatura ex-mode in Vim?


4

Ho appena creato una funzione Vim per sostituire le interruzioni di riga di Windows con quelle Unix. Ora voglio essere in grado di digitare :linebreake farlo funzionare. Ecco il mio primo tentativo:

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

cmap linebreak :call UseUnixLineBreaks()<CR>

(A proposito, questo ^Mè un personaggio di controllo - digitalo con Ctrl+v Ctrl+m)

Quando provo a eseguirlo digitando :linebreak, viene eseguito, ma si comporta in modo strano: ogni lettera del comando appare in sequenza, cancellando la precedente. Ad esempio, vedo :l, quindi :i, quindi :n, ecc. Quando scrivo l'ultima lettera, viene eseguita immediatamente.

Voglio che venga visualizzato l'intero comando, in modo da poter vedere che l'ho digitato correttamente, quindi premere Invio per eseguirlo.

Come posso fare questo?

Risposte:


5

Capito

Apparentemente quello che voglio non è affatto una mappatura, ma un comando. Quindi, l'ultima riga dovrebbe essere sostituita con:

command Linebreak call UseUnixLineBreaks()

Nota la "L" maiuscola - i comandi definiti dall'utente devono iniziare con una lettera maiuscola. Vedere :help command.


2

Ecco come funzionano i mapping: la sostituzione avviene dopo l'inserimento dell'intero mapping.

Per creare alias di comando, prova lo script cmdalias.vim .

In una nota correlata, :setl ff=unix.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.