Wywołaj po cichu funkcję Vima

25

Napisałem małą funkcję Vima, która przesuwa kursor do pierwszego znaku bieżącej linii. Jeśli kursor znajdował się już na pierwszym znaku, kursor zostanie przeniesiony do pierwszej kolumny.

" 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

Jak mogę cicho wywołać tę funkcję? Wolę „: wywołanie FirstCharOrFirstCol ()” nie było wyświetlane w linii statusu. Po prostu zmiana na noremap H :silent call…nie wydaje się wystarczająca.

Jezen Thomas
źródło
7
Tylko mała uwaga: w pliku VimScript (tj. *.vim) Nigdy nie potrzebujesz wiodących :znaków.
tommcdo

Odpowiedzi:

34

Możesz wywołać tę funkcję po cichu, definiując cichą mapę:

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

Aby uzyskać więcej informacji, zobacz :h :map-<silent>. Zwróć uwagę w szczególności, że zapewni to tylko to, że polecenie nie zostanie wyświetlone na ekranie podczas wykonywania odwzorowania. :silentPoleceniem wyciszyć wyjście z samej funkcji (patrz :h :silent).

Karl Yngve Lervåg
źródło
1
Niezły, :silentwłaśnie tego szukałem. Warto zauważyć, że jeśli masz błędy w swojej funkcji, nadal będziesz otrzymywać wiadomości, chyba że używasz !. Nie zdawałem sobie sprawy, że zostawiłem kod w niepoprawnym stanie, więc pomyślałem, że nie używam go :silentpoprawnie, ponieważ nie wyciszał echa i mogłem zobaczyć błąd na wyjściu !!
JonnyRaa,