screen + vim -- 有什么方法可以自动设置 screen 窗口名称来打开 vim 文件名?

screen + vim -- 有什么方法可以自动设置 screen 窗口名称来打开 vim 文件名?

我有一个非常漂亮的屏幕 rc 文件,它向我显示打开的屏幕窗口,几乎就像终端底部的选项卡一样。目前,窗口是根据我的提示命名的,这不太有用。有没有办法根据当前窗口中打开的 vim 会话的文件名自动命名窗口?我认为如果可能的话,这将成为一个至高无上的多窗口编辑器。

答案1

设置title选项。这对我来说在 xterm 等中是开箱即用的,但在 screen 中却不是。这个技巧有效:

if &term == "screen"
  set t_ts="\ek"
  set t_fs="\e\\"
  set title
endif

preexec另一种方法是在 shell 中编写一个函数,将窗口标题设置为正在运行的命令。 Zshpreexec原生支持,并且bash 也可以做到这是一个 zsh 示例

答案2

我使用了一种更黑客的方式:使用 tcsh 我将以下内容放入我的 .cshrc 中

# escape sequence to set the screen title
alias stitle 'echo -n "^[k\!*^[\\"'
# shorthand to set the screen title to the hostname
alias H stitle `hostname -s`
# shorthand to set the screen title to the filename, launch vim, and then set it back
alias vis 'stitle \!* ; vim \!* ; H'

只要你记得在需要标题时使用 vis 而不是 vim,它就可以工作。

我还添加了

set notitle

到我的 .vimrc 以防止 vim 设置正在运行的窗口屏幕的标题。

相关内容