我定期从 OS X (El Capitan) 终端 ssh 进入 Linux 集群,有时使用多个终端选项卡。我使用 bash 和 vim。
我想做以下事情:
- 在使用 ssh 时,将终端选项卡标题设置为当前工作目录
PROMPT_COMMAND='printf "\e]1;"`basename $PWD`"\a"'
- 使用 vim 时,将终端选项卡标题设置为“vim — FILENAME”
这是我的问题:
- 如果我这样做
let &titlestring = "vim — " . expand("%:t")
并且set title
在 .vimrc 中,它会更改终端窗户标题,而不是选项卡标题。如果我不单独设置选项卡标题(参数 1),则选项卡标题会镜像窗口标题(参数 2),但一旦设置选项卡标题,它就会与窗口标题“解耦”。 - 如果我运行外部命令.vimrc使用 时
:!
,我会看到一个令人讨厌的“按 ENTER”对话框。 - 如果我用
:silent !
在.vimrc,退出 vim 后我的终端提示符出现在屏幕底部。我真的不想在每次使用 vim 时都保存提示位置并重置它。 如果我在我的.bashrc以下功能:
function vim { printf "\e]1;"`basename "$1"`"\a" vim "$1" }
然后我的终端崩溃
vim
从命令行调用时。调用该函数vvim
是可行的,但我不想vvim
永远打字。我想要别名vim
。
所以我似乎被困住了。任何建议将不胜感激。先感谢您!
答案1
嗯,我自己的问题已经解决了。我编程 101 失败了。
通过将 vim 定义为函数然后调用 vim,我设置了一个无限递归循环。难怪我的终端崩溃了。我需要调用“真正的”vim,即实际的可执行文件。这做到了这一点:
function vim
{
printf "\e]1;"`basename "$1"`"\a"
/usr/bin/vim "$1"
}