Answers:
我不确定如何在全局范围内执行以下命令:
:silent !<command>
请务必在后面加上空格 silent
:redraw!
选项解决了。双重<cr>
可能是相似的。且不太复杂
找到了一种解决方法:<CR>
在map命令中添加一个额外的内容。
map <F5> :wall!<CR>:!sbcl --load foo.cl<CR><CR>
:help hit-enter
:help hit-enter
在“ Press ENTER ...”提示下提供了一些相当有用的背景信息。介意解释吗?
set nomore
vimrc文件中可能是语法错误
set number
,然后set syntax
在.vimrc文件中下面的位置。删除set syntax
Vim后,它不再提示我。
:message
以找出问题所在。
set syntax
。替换为,即可set syntax=on
解决问题。
这就是我在棘手的情况下无需单击“ ENTER”就可以运行外部命令的方式。与不同:silent
,我仍然可以看到命令输出。
命令行
:exe ":!<command>" | redraw
脚本/功能
exe ':!<command>'
redraw
与 <expr>
map <expr> <F5> ":exe ':!<command>'\n:redraw\<CR>"
<expr>
调用函数的映射
map <expr> <F5> MyFoo()
fu! MyFoo()
return ":exe ':!<command>' | redraw\<CR>"
endf
<command>
<command>
被替换为实际的外部命令,例如map <expr> <F5> ":exe ':!gdb'\n:redraw\<CR>"
您可以使用:
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
我有一个类似的问题,但是当我运行argdo替换多个文件中的相同字符串时,例如,
argdo %s/something/Something/eg|update
我一直不得不按向下翻页。
您可以在运行脚本之前设置以下选项,以便只有最终提示而不是很多提示
:set nomore
:set nomore
,舔得还没结束。它也位于:h help hit-enter
@anthony
但是,如果要从vim命令行执行命令。然后有点棘手。您可以silent
在实际命令之前添加关键字。执行命令后,它将自动带您回到vim窗口。但是您仍然需要手动执行,redraw
因为某些窗口(如NERD_Tree)需要重绘。
对于这种情况,请尝试按照vim帮助文档中的说明进行操作:
要减少点击提示的数量:
- 将“ cmdheight”设置为2或更高。
- 将标记添加到“ shortmess”。
- 重置“ showcmd”和/或“统治者”。
该链接提供了另一种出路。将此放入您的vimrc文件
命令!-nargs = 1静音 \执行“静音!” 。 \ | 执行“重画!”
然后,您可以:Silent command
像常规命令一样使用。
具体来说之前.vimrc
有:
nnoremap M :silent make\|redraw!\|cc<CR>
更改为:
nnoremap M :silent make\|silent redraw!\|silent cc<CR>
以前,“ Press ENTER”并不总是显示出来,但经常会令人讨厌。其他silent
s解决了此问题。(看起来好像silent
不需要,redraw!
因为出现:cc
了“ Press ENTER”消息。)
此更改的缺点是不再显示的输出
:cc
,因此您必须猜测出什么错误。一个小调整修正了这个:nnoremap M :silent make\|redraw!\|cw\|silent cc<CR>
这将使错误QuickFix列表(的输出
make
)自动出现(并且通过vim-magic,如果没有错误,则消失)。
仅供参考:
进行此M
映射的动机是只需M
在正常模式下按以下操作:
make
所有内容时,都处于git
控制之下)make
My Makefile
s的构造通常仅需一秒钟的时间。
稍作调整,就可以将其应用于非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
魔术)
示例如何将其用于Python脚本。(抱歉,这里没有副本,这是另一个故事。)
如果您的错误是由E303引起的,则在.vimrc
文件中创建临时目录可能会解决该问题。
打开任何文件后,编写并输入:
:messages
如果有错误,它将提示。
如果看到E303(错误303)“无法打开“ {文件名}”的交换文件,无法恢复”,则表明系统中有旧的恢复交换文件的尝试(很可能丢失或不存在) 。
要解决此问题,请在.vimrc
文件中分配一个临时目录。
要查找.vimrc
文件的位置,请键入并输入以下内容:
$ locate .vimrc
/root/.vimrc
开启档案 $ vi .vimrc
将此附加到文件末尾:
set directory=.,$TEMP
保存并关闭 :wq
最后,使用以下命令重新加载配置文件:
$ . /etc/profile
尝试使用VI打开任何文件。该问题应得到解决。
在上gvim
,如果您已设置guioptions+=!
(!
在中添加guioptions
),则是因为这一点。此选项(!
)使您可以gvim
在外部终端上执行一些命令(这些命令支持更多功能,例如颜色和许多其他功能)。
您可以使用尝试一下:set guioptions-=i
,看看是否适合您。
set dir=$TEMP
您的vimrc。这告诉vim为其临时文件使用正确的临时文件夹。反过来,这可以修复错误并删除“按Enter”提示。