我想从 vim 内部运行一些终端命令

我想从 vim 内部运行一些终端命令

当我编写代码时,我会做两件事。我要么在浏览器中打开该文件,要么在节点中运行它。所以我想在 vim 中创建几个快捷方式来达到这个效果。

我想F5在当前目录中打开一个新的 gnome 终端并运行,http-server然后在 firefox 中打开一个新选项卡,点击端口 8000。

另外,我想F6打开一个新的 gnome 终端并运行nodemon,然后打开一个新的 firefox 选项卡并访问端口 8000。

nnoremap <F5> :exe ':silent !firefox %'
nnoremap <F5> :exe ':silent !firefox %'

答案1

这可能更适合 vi.stackexchange.com 上的 vi/vim 堆栈

请注意, :silent 标记会取消按 Enter 键,因此必须将其添加到命令集之后才能使其在命令行中运行。我在以下方面非常幸运。

:nnoremap <F5> :exe ':silent !firefox % 2>/dev/null &'^M^L

请注意,您必须按 ctrl-V 才能在末尾获得 ctrl-M 和 ctrl-L 位。这是我添加的内容的简要概述。

2>/dev/null to avoid dumping stderr to screen.
& to allow us to drop back to vim without waiting for firefox to finish
^M to execute the command
^L to initiate a redraw (the command frequently blacked out my screen)

奇怪的是,如果没有 stderr 重定向,我只需要等到 Firefox 完成将错误转储到屏幕并再次重绘即可。在这些行显示奇怪的位之前将其丢弃要容易得多。

相关内容