Vim - 运行外部命令绑定到F5插入导致源

时间:2012-01-04 14:22:30

标签: vim command-line macvim

我目前正在开发一个需要“编译”阶段进行测试的webapp。为此,我有一个简单的shell脚本,它设计用于从精确目录运行。

所以在Vim中,当我进入命令模式并发出它时,它可以工作:

:lcd /my/script/directory
:!./build debug

我的构建脚本在命令窗口中写了一些日志,一切都很好,并告诉我按返回返回编辑我的东西。细

现在我想将其绑定到F5以加快速度。在我的~/.vimrc中,我添加了这个:

map <F5> :lcd /my/script/directory<CR>! ./build debug<CR>

但是在我的~/.vimrc来源之后,当我按下F5时,我的脚本运行正常...但奇怪的是,Vim用脚本的输出替换了我正在使用的当前行。如果我做map <silent> <F5> …

,也是如此

如果我用简单的./build debug更改ls,问题就出现了。 ls的输出插入到当前文档中,覆盖当前行。

有人知道问题的来源吗?我真的需要查看我的build脚本的输出,因此我无法在绑定后添加“撤消”命令,这将简单地删除我命令的插入输出。

FWIW,我在OSX 10.7.2上运行MacVim快照63,但是当我使用来自iTerm2(1.0.0.20111020)的普通旧命令行vim(v7.3)时也会出现这种情况。 / p>

2 个答案:

答案 0 :(得分:3)

尝试

map <silent> <F5> :lcd /my/script/directory \| !./build debug<CR>

转义管道可以链接命令。

答案 1 :(得分:0)

!之前使用冒号,例如:

map <F5> :lcd /my/script/directory<CR>:! ./build debug<CR>