在Vim中打开一个小窗口以执行命令

clj7thdc  于 2022-11-11  发布在  其他
关注(0)|答案(4)|浏览(250)

我需要写很多代码,并且经常编译。我讨厌为了编译代码而来回切换不同的窗口。有没有可能在底部打开一个小窗口,运行invoke shell,然后在需要的时候关闭那个窗口?

xqnpmsa8

xqnpmsa81#

使用GVim或MacVim,您可以在命令行中运行外部命令:Gvim/MacVim附带了一个非常有限的shell,它会很乐意地向你显示编译器的输出。

:!command
:!command %

对于CLI Vim,相同的方法将暂停Vim并返回到shell以执行您的命令。
在这两种情况下,您都将收到一条消息,要求您按Enter键返回到正常编辑。
使用:make | cw是一个稍微复杂一点的替代方法,它还可以在快速修复窗口中显示错误。
一个更复杂的方法是将Tim Pope的Dispatch插件与tmux或screen结合使用。

ogq8wdun

ogq8wdun3#

我使用tmux来实现类似的功能。我在我的 ~/.tmux.conf 文件中有以下内容:

bind s splitw -v -p 25 -c '#{pane_current_path}' '/bin/bash'
bind q kill-pane

按下 Ctrl-b + sprefix + s),底部会打开一个包含bash shell的新窗格。我可以从那里运行shell命令:findgrepmake 等。完成后,我按 Ctrl-b + q 关闭shell。
要在每个bash会话上启用tmux,请将以下内容添加到您的 ~/.bashrc

[[ -z "$TMUX" ]] && exec tmux
px9o7tmv

px9o7tmv4#

如果编译成功,可以Map一个键到编译器并运行程序:

:map F8 :!cc % && ./a.out

或者只是

:sh
make run
Ctrl-D

另一个选择是使用Ctrl-Z暂停vi并在shell中执行您的操作,然后输入fgvim返回到前台。请注意,这实际上是shell的一个特性,而不是vim,但它产生了您所寻求的效果。
请注意,这个想法源自丹尼尔Barrett的书 “Efficient Linux at the Command Line”。我忘记了页码。

相关问题