Llamar a una función Vim en silencio

25

Escribí una pequeña función Vim que mueve el cursor al primer carácter de la línea actual. Si el cursor ya estaba en el primer carácter, entonces el cursor se mueve a la primera columna.

" 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

¿Cómo llamo a esta función en silencio? Prefiero que ': call FirstCharOrFirstCol ()' no se muestre en la línea de estado. Simplemente cambiar a noremap H :silent call…no parece ser suficiente.

Jezen Thomas
fuente
77
Solo una pequeña nota: en un archivo VimScript (es decir *.vim), nunca necesita los :caracteres principales .
tommcdo

Respuestas:

34

Puede llamar a la función en silencio definiendo un mapa silencioso:

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

Para más información, ver :h :map-<silent>. Tenga en cuenta en particular que esto solo garantizará que el comando no se repita en la pantalla cuando se ejecuta la asignación. El :silentcomando se usa para silenciar la salida de la función misma (ver :h :silent).

Karl Yngve Lervåg
fuente
1
Buena, :silentes lo que estaba buscando. Vale la pena señalar que si tiene errores en su función, seguirá recibiendo los mensajes a menos que los use !. ¡No me di cuenta de que había dejado el código en un estado no válido, por lo que pensé que no lo estaba usando :silentcorrectamente, ya que no estaba silenciando los ecos y ¡pude ver un error en la salida!
JonnyRaa