是否可以让 Xmonad 在与活动终端相同的目录中打开一个新终端(如果活动窗口是终端或在其中运行的 vim 等程序)?事实上,我的所有终端都在 中打开$HOME
。如果我在不同的工作区中打开新终端,这种情况对我来说并不重要。这将极大地提高工作效率,因为否则我必须一直cd
到我正在工作的目录。
如果无法直接使用 Xmonad 实现这一点,我对替代解决方案很感兴趣。我能想到的唯一办法是重载 PROMPT_COMMAND,将当前目录写入文件,并查看.bashrc
此文件以确定要去哪里。但这是一个非常不完善的解决方案,在许多情况下都有效,但大多数情况下都不正确。
答案1
我没有对默认设置进行过多的改动,ctrl+shift+n
它对我来说已经完成了。
答案2
这并没有真正回答你的问题,但我有一个可以节省你的时间并解决你的问题的替代方法:自动跳转
这是一个可以保存您在终端中浏览文件夹时的习惯的软件。每次您cd
进入一个文件夹时,它都会增加相关的可能性。例如,在我的系统上,它现在有类似的东西:
343368.3820292514 /home/fb
66.1004508305352 /home/fb/documents
65.2439790325514 /home/fb/workspace/MyProject
55.78935025659235 /very/long/path/boring/to/join/Folder
51.78935025659235 /home/fb/master-thesis
49.150383518340945 /usr/share/opencv
43.1282216187962 /home/fb/.dotvim
...
然后,当您想要进入某个文件夹时,您只需提供名称的一部分,它就会转到最有可能对应的文件夹。通常该命令j
与自动跳转相关联。例如,在您的例子中,用法如下。
- 打开终端
- (仅限第一次)前往
cd
文件夹/very/long/path/boring/to/join/Folder
- 做一些工作
- 稍后当你需要另一个终端时,打开一个新终端
- 进入后
j fol<ENTER>
您将直接进入/home/fb/very/long/path/boring/to/join/Folder
当然,这只有当您要加入的文件夹是您经常去的文件夹时才有效。
答案3
我根据每个工作区设置我的目录。然后我在该工作区中打开的所有终端都会在该目录中打开。这是使用workspacedir扩展完成的: http://xmonad.org/xmonad-docs/xmonad-contrib/XMonad-Layout-WorkspaceDir.html
基本上,我将一个键绑定到 changeDir。当我按下该键时,会弹出一个提示,让您设置目录(使用有效的 Tab 补全功能)。
答案4
您可以使用 X window idwithWindowSet
并查询xprop
PID,从中提取 CWD。
我一直在使用这种方法在 Linux 机器上已经运行了一段时间(成功了)。只要你调整从 PID 中提取 CWD 的逻辑,它应该可以在大多数类 Unix 操作系统上运行。