静默调用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

Answers:


34

您可以通过定义一个静默映射来静默调用该函数:

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

有关更多信息,请参见:h :map-<silent>。特别注意,这将仅确保执行映射时不将命令回显到屏幕。该:silent命令用于使函数本身的输出静音(请参阅参考资料:h :silent)。


1
不错,:silent就是我所追求的。值得注意的是,如果您的函数中有错误,除非使用,否则仍然会收到消息!。我没有意识到我将代码置于无效状态,因此以为我没有:silent正确使用,因为它没有使回声静默,并且我会在输出中看到错误!
JonnyRaa
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.