Vim —运行绑定到 F5 的外部命令会在源中插入结果

发布于 2024-12-25 08:53:58 字数 874 浏览 1 评论 0原文

我目前正在开发一个网络应用程序,需要一个“编译”阶段来进行测试。为此,我有一个简单的 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

叶落知秋 2025-01-01 08:53:58

Try

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

转义管道用于链接命令。

Try

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

The escaped pipe is here to chain commands.

一抹微笑 2025-01-01 08:53:58

! 之前使用冒号,例如:

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

Use a colon before !, like:

map <F5> :lcd /my/script/directory<CR>:! ./build debug<CR>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文