我有 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