配置 bash 和/或 vim 以在每次完成编辑时执行 source ~/.bashrc

配置 bash 和/或 vim 以在每次完成编辑时执行 source ~/.bashrc

我想source ~/.bashrc在每次完成编辑文件时执行vim(即在:wq vim命令之后)。

我应该如何配置vimbash以这种方式工作?

答案1

有一个钩子可以让 vim 在写入文件后执行命令。例如,我在这里使用它在保存后自动重新加载 vim 的 rc 文件:

autocmd BufWritePost $MYVIMRC source $MYVIMRC

不幸的是,这对您想做的事情完全没有帮助。这是因为运行的命令是作为 vim 进程的子进程执行的。无论您在那里做什么,父环境都不会受到影响。

你真正需要的是 shell 级别的东西。首先看看你在做什么:

vim  ~/.bashrc
source ~/.bashrc

但实际上,如果第一个成功,您只需要后者:

vim ~/.bashrc && source $_

现在您所需要的只是一个方便的命令,可以更轻松地键入:

function vbrc () {
    vim ~/.bashrc && source $_
}

现在要编辑 bashrc 文件,只需运行vbrc即可,编辑完成后它将获取该文件。

测试 bashrc 更改的另一个方便的做法是在 vim 中将 shell 作为子进程运行。这将允许您快速测试 shell 中保存的更改。当您退出 shell 时,您将重新编辑该文件。

:!bash

您甚至可以将其连接到保存挂钩,以便每次保存文件时都会强制您检查实时 shell 内的结果。显然,这仅在积极开发 rc 的情况下有用,因此您可能需要手动激活它,而不是从 vimrc 激活:

autocmd BufWritePost ~/.bashrc !bash

答案2

一种直接的方法:

vim ~/.bashrc && source $_

您可以创建一个别名:

alias vimbashrc='vim ~/.bashrc && source $_'

这适用于bashzsh。在其他 shell 中,您必须显式.bashrc指定源名称才能使其工作:

alias vimbashrc='vim ~/.bashrc && source ~/.bashrc'

相关内容