使用 screenrc,如何让 `Ca c` 在当前窗口的工作目录中打开一个新窗口?

Mat*_*ner 3 gnu-screen working-directory

使用 screenrc,如何C-a c在当前窗口的工作目录中打开一个新窗口?默认情况下,它似乎在调用原始屏幕会话时在工作目录中打开新窗口。

小智 6

默认情况下,screen也绑定C-a C-c以创建一个新窗口,因此您可能需要添加另一行.screenrc来处理这种情况:

bind c stuff "screen -X chdir \$PWD;screen^M"
bind ^c stuff "screen -X chdir \$PWD;screen^M"
Run Code Online (Sandbox Code Playgroud)

关于此命令如何工作的说明:

  1. stuff将其参数字符串直接放入当前窗口

    命令: stuff string

    将字符串填充到string当前窗口的输入缓冲区中。

  2. screen -X chdir \$PWD告诉 screen 执行命令chdir,该命令将其操作目录(新屏幕窗口将在其中启动)更改为$PWD包含当前工作目录的环境变量。这是不可能.screenrc独自完成的;因此,操作输入缓冲区stuff是必要的。

  3. screen已经运行的命令screen会创建一个新窗口,就像C-a C-c.

  4. ^M生成一个回车,它告诉 shell 执行现在在缓冲区中的命令。没有它,您将不得不按enter(或C-m,当然)。

因此,此绑定将在您执行它的窗口中留下这样的 cruft:

user@host:~/directory$ screen -X chdir $PWD;screen
user@host:~/directory$
Run Code Online (Sandbox Code Playgroud)