如何让 sudoedit 源 ~/.bashrc 文件

如何让 sudoedit 源 ~/.bashrc 文件

我有 Vim 快捷方式,需要我编辑文件~/.bashrc以停止某些终端快捷方式,例如<C-S>- 这会冻结整个终端 - 这样我就可以在 Vim 中使用它们。当我打开 Vim 文件时,vim somefile效果很好。但是,当尝试使用我的快捷方式编辑系统文件时sudoedit somefile,需要终端在 Vim 运行时停止使用它们,这不起作用并且<C-s>仍然冻结整个终端。我尝试将相同的功能添加到~/.bashrc/etc/bash.bashrc/etc/profile中,/root/.bashrc/root/bash_profile它们都不起作用。有什么办法吗?我知道我可以使用,sudo vim somefile但这不会加载我的~/.vimrc文件,所以我将丢失所有设置。

~/.bashrc如果有任何帮助,这是我的文件中的功能:

#  No ttyctl, so we need to save and then restore terminal settings
vim()
{
   local STTYOPTS="$(stty --save)"
   stty stop '' -ixoff
   command vim "$@"
   stty "$STTYOPTS"
}

在此先感谢您的帮助。

答案1

好的!!

如果有人感兴趣的话,我自己找到了答案。我真是太愚蠢了。我的函数调用command vim "$@"意味着它在sudoedit被调用时不会被使用。所以我所要做的就是添加第二个函数,它的内容相同但名称相同,sudovim并且它调用的是“sudoedit”而不是 vim。所以现在当我想用它编辑时,sudoedit我只需sudovim filename;当我想不用它编辑时,sudoedit我只需调用vim filename 这是我的第一个函数:

# stop some terminal shortcuts while using vim
vim()
{
   local STTYOPTS="$(stty --save)"
   stty stop '' -ixoff
   command vim "$@"
   stty "$STTYOPTS"
}

以及sudoedit

# same as above but calls sudoedit which is defined in $SUDO_EDITOR
# use sudovim to write in sudoedit
sudovim()
{
    local STTYOPTS="$(stty --save)"
    stty stop '' -ixoff
    command sudoedit "$@"
    stty "$STTYOPTS"
}

将其放入你的~/.bashrc地图中~/.vimrc

相关内容