Chiama una funzione Vim in silenzio


25

Ho scritto una piccola funzione di Vim che sposta il cursore sul primo carattere della riga corrente. Se il cursore era già sul primo carattere, il cursore si sposta invece sulla prima colonna.

" Jump to first character or column
noremap H :call FirstCharOrFirstCol()<cr>

:function! FirstCharOrFirstCol()
:  let current_col = virtcol('.')
:  normal ^
:  let first_char = virtcol('.')
:  if current_col == first_char
:    normal 0
:  endif
:endfunction

Come posso chiamare questa funzione in silenzio? Preferirei ": call FirstCharOrFirstCol ()" non è stato visualizzato nella riga di stato. Il semplice passaggio a noremap H :silent call…non sembra essere abbastanza.


7
Solo una piccola nota: in un file VimScript (cioè *.vim), non hai mai bisogno dei :personaggi principali .
tommcdo,

Risposte:


34

Puoi chiamare la funzione in silenzio definendo una mappa silenziosa:

noremap <silent> H :call FirstCharOrFirstCol()<cr>

Per maggiori informazioni, vedi :h :map-<silent>. Si noti in particolare che ciò garantirà che il comando non venga ripetuto sullo schermo quando viene eseguita la mappatura. Il :silentcomando viene utilizzato per silenziare l'output della funzione stessa (vedere :h :silent).


1
Bello, :silentè quello che stavo cercando. Vale la pena notare che se si verificano errori nella funzione, si riceveranno comunque i messaggi a meno che non si utilizzi !. Non mi ero reso conto di aver lasciato il codice in uno stato non valido e quindi pensavo che non stavo usando :silentcorrettamente in quanto non metteva a tacere l'eco e ho potuto vedere un errore nell'output !!
JonnyRaa,
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.