我正在编写我的 vimrc 文件并执行onoremap以下操作:
onoremap i@ :<c-u>execute "normal! /\\w\\+@\\w\\+\\.[0-9a-zA-Z.]\\+\r:nohlsearch\rvf@h"<CR>
Run Code Online (Sandbox Code Playgroud)
对于这个,我映射了i@对“下一个类似电子邮件的字符串的用户名”执行一些操作。它在足够大的 vim 窗口中运行良好。然而,当我在相对较小的 vim 窗口上测试它时,例如,点击ci@快速更改下一个类似电子邮件的字符串的用户名,此执行需要点击回车才能继续,然后才能真正“更改”。这有点糟糕,因为我可能经常在很小的窗口中做一些 vim 的事情。
我认为这里的回车提示是由于执行搜索命令时消息太长引起的。我已经用谷歌搜索了解决方案,我知道我可以shortmess在 vim 中设置标志来使消息更短或增加命令行显示的高度。但我认为这些解决方案都不是本质。
此外,我不想省略外部命令行输出。有没有办法完全避免仅因“消息空间不足”而导致的敲击输入提示?
或者有什么方法可以改变我的onoremap代码来满足这种需求?
多谢 :)
(谷歌解决方案:避免“按 ENTER 继续”提示)
编辑:我说的是“vim窗口”,但实际上问题并不是由于“vim中的窗口”很小而提示的,而是“vim在一个小终端显示中”。如果您分割了一个小 vim 窗口但仍然有一个长消息栏,则不会出现按回车提示。
有没有办法完全避免仅因“消息空间不足”而导致的敲击输入提示?
不可以。只有“更多提示”才能完全禁用。看:help hit-enter。
我认为这里的回车提示是由于执行搜索命令时消息太长引起的。
我猜,不是长度,而是消息的数量:一条消息用于回显映射,另一条消息用于/输出。
silent尝试像这样使用:
onoremap <silent>i@ :<c-u>silent! execute ...
Run Code Online (Sandbox Code Playgroud)
第一个<silent>抑制“echo”,第二个抑制命令的输出。