在VIM中,如何避免在执行长命令后出现提示输入的提示?

时间:2019-07-25 07:59:32

标签: vim

我正在写我的vimrc文件,并像这样做一些onoremap

onoremap i@ :<c-u>execute "normal! /\\w\\+@\\w\\+\\.[0-9a-zA-Z.]\\+\r:nohlsearch\rvf@h"<CR>

为此,我将i@映射为对“下一个类似电子邮件的字符串的用户名”进行一些操作。它在足够大的vim窗口中工作良好。但是,当我在相对较小的vim窗口上对其进行测试时,例如,点击ci@以快速更改下一个类似电子邮件的字符串的用户名,则必须先点击一次输入,然后才能真正执行“更改”。这太可怕了,因为我可能经常在很小的窗户上做Vim事情。

我相信这里的点击提示是由执行搜索命令时消息太长引起的。我已经在谷歌上寻找解决方案,并且我知道我可以在vim中设置shortmess标志来使消息更短或增加命令行显示的高度。但是我认为这些解决方案不是 essence

此外,我不想忽略外部命令行输出。 是否有某种方法可以完全避免仅由“消息空间不足”引起的点击提示?

或者我可以通过某种方式更改onoremap代码来满足这种需求吗?

非常感谢:)

(Google解决方案:Avoiding the "Hit ENTER to continue" prompts

编辑:我说的是“ vim窗口”,但实际上由于小“ vim窗口”而不是“小终端显示中的vim”而未提示问题。如果您分割了一个小的Vim窗口,但仍然带有一个长消息栏,则不会出现按输入提示。

1 个答案:

答案 0 :(得分:3)

  

是否有某种方法可以完全避免仅由“消息空间不足”引起的点击提示?

不。只能完全禁用“更多提示”。参见:help hit-enter

  

我相信这里的点击提示是由于执行搜索命令时消息太长所致。

我想不是消息的长度,而是消息的数量:一个消息用于回显映射,另一条消息用于/输出。

尝试像这样使用silent

onoremap <silent>i@ :<c-u>silent! execute ...

第一个<silent>禁止显示“ echo”,第二个禁止显示命令的输出。