是否可以將終端機 vim 與 xdg-open 一起使用?
我沒有 GUI 文字編輯器,因為我只透過終端使用 vim。 (我也不太關心 gvim。) 是否可以告訴 xdg-open 開啟終端,然後使用所選檔案開啟 vim?
謝謝。
答案1
在 .bashrc 或 .zshrc 中,根據您分別使用 bash 或 zsh,匯出這兩個環境變數:
export EDITOR=vim
export VISUAL=vim
此外,您可能希望將 vim 與文字檔案的 mimetype 相關聯:
xdg-mime default vim.desktop text/plain
現在你必須在 中建立一個 vim.desktop 文件/usr/share/applications
,它應該執行你想要的終端模擬器,開啟 vim。
答案2
我必須添加一個新答案,即使我的評論僅通過以下方式完成答案蒂亞戈夫克斯,因為在註解中你不能縮排程式碼。
的內容vim.desktop
可以是這樣的:
[Desktop Entry]
Name=Vim Text Editor
Comment=Edit text files
Exec=vim
Terminal=true
Type=Application
Icon=terminal
Categories=Utility;TextEditor;
StartupNotify=true
MimeType=text/plain;
我更喜歡把它放在下面~/.local/share/applications
。
答案3
長話短說
$ xdg-mime default vim.desktop <MIMETYPE>
或編輯~/.config/mimeapps.list
.
MIMETYPE 的輸出是$ xdg-mime query filetype <interested-file>
如果您使用某些桌面環境(KDE、GNOME、LXQT 等),則應參閱 DE 文件。但有一個XDG標準用於為特定 mime 類型設定預設應用程式。 Mime-type 是一種區分一種文件類型和另一種文件類型的方法,請參閱維基百科,或者維基百科。例如,有text/html
用於檔案的mime-type *.html
,以及text/plain
用於*.txt
檔案的mime-type。您可以使用 確定 mime-type $xdg-mime query filetype <file_you_interested>
。
Mime 類型用於將應用程式與這些應用程式應開啟的檔案連結。
打開~/.config/mimeapps.list
它在我的機器上看起來像這樣:
[Default Applications]
x-scheme-handler/http=firefox.desktop
...
inode/directory=org.gnome.Nautilus.desktop
[Added Associations]
application/x-shellscript=nvim-qt.desktop;
...
application/pdf=firefox.desktop;
[Default Applications]
將這些行新增到部分
text/plain=vim.desktop
text/markdown=vim.desktop
text/html=vim.desktop
(如果需要,請添加其他默劇類型)
vim.desktop
我的機器上的文件包含/usr/share/applications
以下內容:
[Desktop Entry]
Name=Vim
TryExec=vim
Exec=vim %F
Terminal=true
Type=Application
Keywords=Text;editor;
Icon=gvim
Categories=Utility;TextEditor;
StartupNotify=false
MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++;
(確實,名字和評論有很多翻譯,但在這裡並不重要)
看線Terminal=true
。
根據 XDG 桌面入口規格中的規則,此行表示啟動器應開啟終端模擬器,然後應在此終端視窗中開啟您的應用程式(Exec
行)。很好,是嗎?
然而,有一個xdg-open 五年前的錯誤和 xdg-open 忽略Terminal
鍵,因為沒有預設終端模擬器的規格。
(他們嘗試了,但 2020 年還沒有規範。 )
因此,如果您不使用 DE,xdg-open 不會為您遵守桌面輸入規格。填補 bug 的人創建了一個補丁(遺憾的是,補丁被忽略了),該補丁查看 $TERMINAL 變數並打開終端模擬器,因此您可以修補 /usr/bin/xdg-open (或$ which xdg-open
)。
如果您不想xdg-open
自己更改腳本,可以使用一些解決方法:
您可以使用
gvim.desktop
(如果您gvim
的系統中有)或nvim-qt.desktop
(qt front-end forneovim
)。您可以建立一個具有某種名稱的文件,例如
my-vim.desktop
包含以下內容:
[Desktop Entry]
Type=Application
Name=MyVim
Exec=<COMMAND TO RUN YOUR TERMINAL> vim %F
Terminal=false
Icon=gvim
Categories=Utility;TextEditor
並將其放入~/.local/share/applications
.
您可以從首選終端的手冊頁中取得執行終端的命令(例如,gnome-terminal -e
)。
更多詳細信息,請參見桌面入口規範。
- 你可以以某種方式閱讀
xdg-open
原始程式碼並調整你的系統,它xdg-open
會認為你正在使用 DE 並呼叫 DE 特定的工具,但我認為這很奇怪。
有用的連結:
XDG-mime 手冊頁 -https://linux.die.net/man/1/xdg-mime
關於 XDG mime 類型的 Arch wiki -https://wiki.archlinux.org/index.php/XDG_MIME_Applications
關於 XDG Desktop 條目的 Arch wiki -https://wiki.archlinux.org/index.php/Desktop_entries#Application_entry
xdg-開放問題 -https://gitlab.freedesktop.org/xdg/xdg-utils/-/issues/84