是否可以将终端 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 不会为您遵守桌面输入规范。填充错误的人创建了一个补丁(遗憾的是,该补丁被忽略了),该补丁查看 $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