我想source ~/.bashrc
在每次完成编辑文件时执行vim
(即在:wq
vim
命令之后)。
我应该如何配置vim
或bash
以这种方式工作?
答案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 $_'
这适用于bash
或zsh
。在其他 shell 中,您必须显式.bashrc
指定源名称才能使其工作:
alias vimbashrc='vim ~/.bashrc && source ~/.bashrc'