Appeler une fonction Vim en silence

25

J'ai écrit une petite fonction Vim qui déplace le curseur sur le premier caractère de la ligne actuelle. Si le curseur était déjà sur le premier caractère, le curseur est déplacé à la place à la première colonne.

" 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

Comment appeler cette fonction en silence? Je préfère «: appeler FirstCharOrFirstCol ()» n'était pas affiché dans la ligne d'état. Changer simplement pour noremap H :silent call…ne semble pas être suffisant.

Jezen Thomas
la source
7
Juste une petite note: dans un fichier VimScript (ie *.vim), vous n'avez jamais besoin des premiers :caractères.
tommcdo

Réponses:

34

Vous pouvez appeler la fonction en silence en définissant une carte silencieuse:

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

Pour plus d'informations, voir :h :map-<silent>. Notez en particulier que cela garantira que la commande ne sera pas répercutée à l'écran lorsque le mappage sera exécuté. La :silentcommande est utilisée pour désactiver la sortie de la fonction elle-même (voir :h :silent).

Karl Yngve Lervåg
la source
1
Joli, :silentc'est ce que je recherchais. Il convient de noter que si vous avez des erreurs dans votre fonction, vous recevrez toujours les messages, sauf si vous les utilisez !. Je ne savais pas que j'avais laissé le code dans un état invalide et j'ai donc pensé que je n'utilisais pas :silentcorrectement car il ne faisait pas taire les échos et je pouvais voir une erreur dans la sortie !!
JonnyRaa