![vi: ${PWD} 从 Caja 打开与从终端打开时的行为](https://linux22.com/image/1189658/vi%3A%20%24%7BPWD%7D%20%E4%BB%8E%20Caja%20%E6%89%93%E5%BC%80%E4%B8%8E%E4%BB%8E%E7%BB%88%E7%AB%AF%E6%89%93%E5%BC%80%E6%97%B6%E7%9A%84%E8%A1%8C%E4%B8%BA.png)
VIM - Vi IMproved 8.1 (2018 May 18, compiled Feb 01 2022 09:16:32)
Included patches: 1-2269, 3612, 3625, 3669, 3741
Ubuntu MATE 20.04.5 LTS
Caja 1.24.0
不确定为什么行为上会有差异。
开始文件夹的视图:
序列预期的结果:
- open a terminal from Caja (Ubuntu MATE 20.04),
- open file with vim junk18.sh
- type :r junk16.sh
Vim 导入位于 vim 启动目录中的 junk16.sh。
序列意外结果:
- Default action for *.sh files is to open using gvim
- cursor right-click on junk18.sh
- select open
- from within gvim, type :r junk16.sh
在按下 Enter 键之前,屏幕显示如下:
结果如下:
那么...为什么 gvim 的工作目录或起始目录不是Caja 中选择的文件的位置???
如果我输入:!sh 然后 密码,它报告了${主页}我的非 root 用户 ID,而不是当前目录文件夹正在被观看!!!
答案1
总体而言,您是图形桌面中“当前工作目录”概念处理方式不佳的受害者。
- 您导航到文件所在的目录
- 您启动一个应用程序
- 应用程序默认在另一个目录中查找;您需要导航再次到你的文件所在的位置。
- 第三个应用程序也同样如此。
这就像在家里做一项工作,每次都必须再次走到车库外面去挑选一件新的工具来工作。
回答你的问题
在第一种情况下,你在 Caja 中打开一个终端。终端的工作目录是在 Caja 中选择的目录。从终端启动的程序也将默认查找此工作目录。
在第二种情况下,您使用右键菜单打开文件。这会导致 gvim 根据.desktop
启动器中提供的信息打开。没有机制将文件管理器的当前目录传递给启动的进程。默认情况下,该文件管理器在您的主目录中启动(如您亲眼所见),除非被Path=
启动器中的指令覆盖。
这是目前的实施方式,因此需要对当前系统的工作方式进行调整。