Вызвать функцию Vim без вывода сообщений


25

Я написал небольшую функцию Vim, которая перемещает курсор на первый символ текущей строки. Если курсор уже был на первом символе, тогда курсор перемещается на первый столбец.

" 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

Как я могу вызвать эту функцию тихо? Я бы предпочел, чтобы ': call FirstCharOrFirstCol ()' не отображался в строке состояния. Просто перехода на noremap H :silent call…недостаточно, кажется, недостаточно.


7
Просто небольшая заметка: в файле VimScript (т.е. *.vim) вам никогда не нужны начальные :символы.
Tommcdo

Ответы:


34

Вы можете вызвать функцию без вывода сообщений, определив отображение без вывода сообщений:

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

Для получения дополнительной информации см :h :map-<silent>. В частности, обратите внимание, что это будет гарантировать, что команда не отображается на экране при выполнении отображения. Команда :silentиспользуется для отключения вывода самой функции (см. :h :silent).


1
:silentХорошо , это то , что я был после. Стоит отметить, что если у вас есть ошибки в вашей функции, вы все равно получите сообщения, если не используете !. Я не понимал, что оставил код в недопустимом состоянии, и поэтому подумал, что я не использовал :silentправильно, потому что это не заставило замолчать эхо, и я мог видеть ошибку в выводе !!
JonnyRaa
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.