有没有不退出vim就可以使用命令行的vim插件

2121 年了,不要再看那些一百年前教你用 ! 运行命令的老旧 Vim 教程了,应该尝试点新东西。除了 floaterm 在 Vim 中用内置终端外,欢迎尝试我的新插件:

skywind3000/asyncrun.extra

它能使用外部的终端窗口,或者 tmux 分屏等多种方式来运行你的命令

比如 Windows 下面打开 cmd.exe 运行命令:

GVim 中打开 cmd.exe 运行命令

命令:

:AsyncRun -mode=term -pos=external echo Hello, World !!

这个体验和你在 Visual Studio 中打开新的 cmd.exe 窗口调试程序是一模一样的。

比如 Unbuntu 下面打开 gnome-terminal 窗口运行命令(点击播放下面 GIF 动图):

Ubuntu + GVim 中打开 gnome-terminal 运行命令

命令:

:AsyncRun -mode=term -pos=gnome ls -la

这种打开终端运行命令的方式,对 GVim 是比较友好的,提供和 IDE 一致的体验。

而对于命令行 Vim,除了像上面那样打开一个新的终端窗口外,还可以尝试:

打开 gnome-terminal 的新 tab 运行命令:

终端 Vim 中,打开一个新的 gnome-terminal 的 tab 运行命令

命令:

:AsyncRun -mode=term -pos=gnome_tab ls -la

当你在 gnome-terminal 中使用 vim 编辑代码时,想运行下当前代码,又不想破坏当前这个终端标签的格局,那么这种用法可以打开一个新的终端标签运行你的命令,比如你的程序要计算十多分钟才跑的出结果,这时你可以时不时观察一下状态,或者回去先前的 Vim 终端标签继续编辑。

在 tmux 侧边面板运行命令:

将命令发送到右侧的 tmux 分屏运行

命令:

:AsyncRun -mode=term -pos=tmux ls -la

不想依赖 tmux 也没关系,使用 terminal_help 在下方终端面板运行命令:

terminal-help 会在 Vim 下方打开一个可以复用的内嵌终端窗口,可以操作也可以发送命令

命令:

:AsyncRun -mode=term -pos=termhelp ls -la

这些你可以稍微配置一下:

noremap :AsyncRun -mode=term -pos=external -cwd=$(VIM_FILEDIR) python “$(VIM_FILENAME)”

那么你在 Vim 中按 F5 就可以打开新的 cmd.exe 运行当前的 Python 脚本了。

更进一步,使用 asynctasks.vim 来管理你的各类任务,定义一个全局任务就够了:

[file-run]command=”$(VIM_FILEPATH)”command:c,cpp=”$(VIM_PATHNOEXT)”command:go=”$(VIM_PATHNOEXT)”command:python=python “$(VIM_FILENAME)”command:javascript=node “$(VIM_FILENAME)”command:sh=sh “$(VIM_FILENAME)”command:lua=lua “$(VIM_FILENAME)”command:perl=perl “$(VIM_FILENAME)”command:ruby=ruby “$(VIM_FILENAME)”output=terminalcwd=$(VIM_FILEDIR)save=2

所有文件类型一网打尽,继续把该任务绑定到 F5 上:

noremap :AsyncTask file-run

那么每次按 F5 将会调用到 file-run 这个任务,在该任务中,会按照文件类型自动选择适当的命令来运行你的当前代码,添加新类型就改 ini 配置即可,不用动 vimrc。

然后继续指定一下:

let g:asynctasks_term_pos = ‘external’

那么对于所有任务配置里包含 output=terminal 的任务,使用 cmd.exe 窗口运行了。

基本包括了所有主流 IDE/编辑器 运行命令的方式了。


比丘资源网 » 有没有不退出vim就可以使用命令行的vim插件

发表回复

提供最优质的资源集合

立即查看 了解详情