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
Não sei por que há uma discrepância no comportamento.
Visualização da pasta inicial:
Sequência com resultados esperados :
- open a terminal from Caja (Ubuntu MATE 20.04),
- open file with vim junk18.sh
- type :r junk16.sh
O Vim importa o junk16.sh localizado no diretório que é o diretório inicial do vim.
Sequência com resultados inesperados :
- 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
Antes de pressionar a tecla Enter, a tela fica assim:
Resultado é o seguinte:
Então ... por que o diretório de trabalho ou diretório inicial do gvim não é o local do arquivo selecionado no Caja ???
Se eu digitar :!sh então pwd , ele relatará o ${HOME} do meu ID de usuário não root, em vez do diretório atual da pasta Caja sendo visualizado!!!
Você é uma vítima da má forma como o conceito de "diretório de trabalho atual" é tratado em desktops gráficos em geral.
É como fazer um trabalho em casa e ter que sair para a garagem todas as vezes para escolher uma nova ferramenta para o trabalho.
Respondendo sua pergunta
No primeiro caso, você abre um terminal em Caja. O diretório de trabalho do terminal é o diretório que foi selecionado no Caja. Um programa iniciado a partir do terminal também irá, por padrão, procurar neste diretório de trabalho.
No segundo caso, você abre o arquivo com o menu do botão direito. Isso faz com que o gvim seja aberto com base nas informações fornecidas em um
.desktop
iniciador. Não há nenhum mecanismo para passar o diretório atual do gerenciador de arquivos para o processo iniciado. Esse começa por padrão em seu diretório inicial (como você viu por si mesmo), a menos que seja substituído por umaPath=
diretiva no iniciador.É como ele é implementado atualmente, então exigiria ajustes no funcionamento do sistema atual.