如何在Vim中禁用“按ENTER或键入命令继续”提示?

时间:2009-05-20 23:52:16

标签: vim

有没有办法在执行外部命令后禁用“按ENTER或键入命令继续”提示?

编辑:找到一种解决方法:在我的.lvimrc中的快捷方式中添加额外的<CR>

map <F5> :wall!<CR>:!sbcl --load foo.cl<CR><CR>

有更好的想法吗?

17 个答案:

答案 0 :(得分:62)

我不确定如何使用一个命令全局地执行此操作:

:silent !<command>

请务必在silent

之后加一个空格

答案 1 :(得分:48)

找到一个解决方法:添加额外的<CR>  到地图命令。

map <F5> :wall!<CR>:!sbcl --load foo.cl<CR><CR>

答案 2 :(得分:28)

:help hit-enter

答案 3 :(得分:17)

这就是我如何处理通过静音在文本模式vim中屏幕运行外部程序的问题(根据我的经验,gvim不会遇到这个问题):

command! -nargs=1 Silent
\ | execute ':silent !'.<q-args>
\ | execute ':redraw!'

使用它代替常规静默命令:

:Silent top

答案 4 :(得分:12)

在我的vimrc(cmdheight)中将:e $MYVIMRC设置为2:

:set cmdheight=2

更多信息here

答案 5 :(得分:11)

vimrc 文件

中可能存在语法错误

答案 6 :(得分:7)

安东尼的回答把我带到了正确的地方,我能够配置gvim不要停止大量的消息。
我将set shortmess=aoOtI添加到我的gvimrc文件中 在:help shortmess提供给您的帮助页面中对此进行了解释 字母表示您不希望看到的消息类别,或者希望vim截断以避免命中输入停止。
我之前通过在gvimrc中设置一个带columns=130的宽初始窗口来管理这个,所以很少有消息会溢出它并且需要烦人的,筋疲力尽,需要输入。

答案 7 :(得分:3)

在屏幕清除之前进行重绘也可以。 这就是我所拥有的:

exe 'ls'  
exe 'b4'  "This redraws, so the Prompt is triggered

但这不会触发提示:

exe 'ls'  
redraw  
exe 'b4'

答案 8 :(得分:2)

您可以使用:

call feedkeys(" ")

例如:

function! Interactive_Questions()
    echo "Question 1:"
    let response1 = getchar()
    echo "Question 2:"
    let response2 = getchar()

    " Do something

    " Without the next line, you would have to hit ENTER,
    " even if what is written (the questions) has no interest:
    call feedkeys(" ")
endf

答案 9 :(得分:2)

我的案子(自动命令)set shortmess+=F成功了。

:h简写
F在编辑文件时不提供文件信息,例如:silent

答案 10 :(得分:0)

我有类似的问题,但是当我运行argdo来替换多个文件中的相同字符串时,例如。

import 'script!jquery'
import 'script!what-input'
import 'script!foundation-sites'

我经常不得不按下页面。

您可以在运行脚本之前设置以下选项,以便只有最终提示而不是许多提示

 argdo %s/something/Something/eg|update

答案 11 :(得分:0)

  • 如果您使用的是关键地图,那么通过在命令的末尾添加更多内容可以更轻松地度过您的生活 - 但通常2次就足够了。
  • 但是如果从vim命令行执行命令。然后它有点棘手。您可以在实际命令之前添加关键字silent。执行命令后,它会自动返回到vim窗口。但您仍然需要手动执行redraw,因为需要重新绘制一些像NERD_Tree这样的窗口。

    • 对于这种情况,请尝试按照vim帮助文档中的说明进行操作:

        

      减少点击输入提示的次数:

           
          
      • 设置   
      • 将标记添加到&#39; shortmess&#39;。
      •   
      • 重置&#39; showcmd&#39;和/或&#39;标尺&#39;。
      •   
    • This link提供了另一条出路。把它放到你的vimrc文件

      command! -nargs=1 Silent
      \   execute 'silent !' . 
      \ | execute 'redraw!'
      

然后你可以像常规命令一样使用:Silent command

答案 12 :(得分:0)

如果您的错误是由E303引起的,则:messages 文件中创建一个临时目录可以解决该问题。

打开任何文件后,编写并输入:

.vimrc

如果有错误,它将提示。

如果看到E303(错误303)“无法为“ {文件名}”打开交换文件,则无法恢复”,则可能表明存在尝试恢复交换文件的旧尝试(很可能丢失或不存在)在系统中。

要解决此问题,请.vimrc文件中创建一个临时目录。

要查找$ locate .vimrc /root/.vimrc 文件的位置,请键入并输入以下内容:

$ vi .vimrc

打开文件set directory=.,$TEMP

将此添加到文件末尾:

:wq

使用$ . /etc/profile 保存并关闭

最后,使用以下方法重新加载配置文件:

<input type="button" class="single_add_to_cart_button button alt" value="metin1" onclick="searchin(this)" />

  function searchin(param) {
     metin = $('input[name="+ param.val() + "]').val();
     $.post('/wp-content/plugins/ajax-test/SearchByNumberNew.php', {yazi2: metin}, function (gelen_cevap) {
        $('.cevap').html(gelen_cevap);
     });
  }

尝试使用VI打开任何文件。该问题应得到解决。

答案 13 :(得分:0)

在我这边,解决方案是to use silent more frequently in a command chain

具体来说,.vimrc之前:

nnoremap M :silent make\|redraw!\|cc<CR>

已更改为:

nnoremap M :silent make\|silent redraw!\|silent cc<CR>

在此之前,“按ENTER”并不总是显示出来,但是却很烦人。其他silent个解决了这个问题。 (看来silent上不需要redraw!,因为:cc导致了“ Press ENTER”消息。)

  

此更改的缺点是不再显示:cc的输出,   所以你必须猜测是什么错误。 little tweak可以解决此问题:

nnoremap M :silent make\|redraw!\|cw\|silent cc<CR>
     

这会自动导致错误的QuickFix列表(make的输出)   出现(通过vim-magic,如果没有错误,则消失)。

仅供参考:

M映射的动机是只需在正常模式下按M即可:

  • 保存编辑(使用make时,一切都受到git的控制)
  • 调用make
  • 直接跳转到第一个错误或警告

我的Makefile通常是这样构造的,只花了不到一秒钟的时间。

稍作调整,它也可以应用于非C类型的工作负载:

.vimrc中添加

set efm+=#%t#%f#%l#%c#%m#

这允许vim解释如下消息,例如:cc(显示错误):

#E#file#line#column#message#
#W#file#line#column#message#
#I#file#line#column#message#

({E个错误,W个警告,I nfo,基于vim魔术)

Example how to use this for Python scripts。 (抱歉,这里没有副本,这是另一个故事。)

答案 14 :(得分:0)

gvim上,如果您设置了guioptions+=!(在!中添加了guioptions),是因为这个原因。此选项(!使gvim在外部终端上执行一些命令(这​​些命令支持更多功能,例如颜色和许多其他功能)。

您可以使用:set guioptions-=i尝试一下,看看是否适合您。

答案 15 :(得分:0)

如果我保存的文件位于我对目录没有写入权限的目录中,则会发生这种情况。我在目录上做了一个chmod 777(我已经对文件本身有写权限)和&#34;按ENTER键&#34;消息不再显示。

答案 16 :(得分:0)

您可以在 vimrc 下面写 2 行以禁用来自 vim 的所有消息

set shortmess=
set cmdheight=2

这对我有用,希望你能解决问题