有没有办法让 vim 在另一个终端窗口中运行“make”命令?

有没有办法让 vim 在另一个终端窗口中运行“make”命令?

我主要使用vim作为C/C++编程的编辑器。不幸的是,我对构建过程的工作方式不太满意。我知道可以输入(或映射到一个键):make来运行 make 过程。不过,我不喜欢这个命令的工作方式,因为它在同一个终端窗口中运行构建过程,而没有适当的突出显示。因此,我通常在第二台显示器的另一个窗口中运行 make 命令,这样我既可以正确突出显示,又可以在滚动浏览主 Vim 窗口中的源代码时查看编译器在一个窗口中显示的构建错误。这也相当乏味,因为它需要我将焦点更改到另一个窗口,然后输入 make 命令。

现在,我的问题如下:是否可以让 vim 在另一个窗口中运行 make 命令而无需更改焦点?这样,我可以将“在其他窗口中构建”命令映射到 vim 中的某个键,并且只需按一下键即可实现所有这些。

我的系统是 Manjaro Linux,使用 i3 作为 DWM。

(我不确定是否将其发布在 stackoverflow 上或这里,如果这是错误的论坛,请原谅我。)

答案1

使用命名管道:

  1. 在一个终端中使用 Vim 打开源代码。
  2. 打开您想要输出的第二个终端make并使用 . 创建一个新管道mkfifo mypipe
  3. 在第二个终端中,运行watch --color -n 0.3 'cat mypipe'以始终读取命名管道。
  4. 在第一个终端中,:!script -q -c "make" mypipe > /dev/null保存对源代码的更改后在 Vim 中运行。

我们必须script用来欺骗程序保留彩色输出。确保您的版本watch 支持颜色

答案2

您可以将其添加到您的~/.vimrc

nnoremap <Space> :vert :term make<CR><C-W><C-w>

这里我们重新映射Space按键:vert :term make<CR><C-W><C-w>命令,这意味着:

  • :vert进行垂直分割;
  • :term在新窗口中运行终端;
  • make<CR>make在该终端中运行;
  • <C-W><C-w>将焦点放回原始窗口。

我希望这就是你所追求的。当然,选择您想要的键/组合(不需要Space),如果您喜欢水平分割,只需删除该:vert位即可。

相关内容