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.


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).


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,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.