Vim —运行绑定到 F5 的外部命令会在源中插入结果
我目前正在开发一个网络应用程序,需要一个“编译”阶段来进行测试。为此,我有一个简单的 shell 脚本,该脚本旨在从精确的目录运行。
因此,在 Vim 中,当我进入命令模式并发出此命令时,它会起作用:
:lcd /my/script/directory
:!./build debug
我的构建脚本在命令窗口中写入一些日志,一切都很好,并告诉我按回车键返回编辑我的内容。美好的。
现在我想将其绑定到 F5
以加快速度。在我的 ~/.vimrc
中,我添加了以下内容:
map <F5> :lcd /my/script/directory<CR>! ./build debug<CR>
但是在获取我的 ~/.vimrc
后,当我按 F5 时,我的脚本运行正确...但是奇怪的是,Vim 用脚本的输出替换了我所在的当前行。如果我做 map
如果我用一个简单的 ls
更改 ./build debug
,问题也会出现。 ls 的输出被插入到我当前的文档中,覆盖当前行。
有人知道问题从何而来吗?我确实需要查看我的 build
脚本的输出,因此我无法在绑定后添加“撤消”命令,这只会删除命令的插入输出。
FWIW,我在 OSX 10.7.2 上运行 MacVim snapshot 63,但当我使用 iTerm2 (1.0.0.20111020) 中的普通旧命令行 vim
(v7.3) 时也会发生这种情况。
I'm currently developing a webapp that need a "compilation" phase to be tested. For this, I have a simple shell script, which is designed to run from a precise directory.
So in Vim, when I enter command mode and issue this, it works:
:lcd /my/script/directory
:!./build debug
My build script writes some logs in the command window, everything is fine, and tells me to press return to go back editing my stuff. Fine.
Now I'd like to bind this to F5
to speed things up. In my ~/.vimrc
, I have added this:
map <F5> :lcd /my/script/directory<CR>! ./build debug<CR>
But after source'ing my ~/.vimrc
, when I press F5, my script runs correctly... but strangely Vim replaces the current line I'm on with the output of the script. The same if I do map <silent> <F5> …
If i change ./build debug
with a simple ls
, the problem arises too. The output of the ls
is inserted in my current document, overwriting the current line.
Does anybody know where the problem comes from? I really need to see the output of my build
script, so there's no way I could just add a "undo" command after my bind, that would simply erase the inserted output of my command.
FWIW, I'm running MacVim snapshot 63 on OSX 10.7.2, but it also occurs when I use the plain old command-line vim
(v7.3) from iTerm2 (1.0.0.20111020).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
Try
转义管道用于链接命令。
Try
The escaped pipe is here to chain commands.
在
!
之前使用冒号,例如:Use a colon before
!
, like: