我一直尝试使用 alacritty 作为默认终端仿真器来执行 vim。我已经将 alacritty 设置为我的默认终端仿真器,并且在我的 vim.desktop 中我将其更改为exec=vim %F
。exec=alacritty -e vim %F
问题是,当我打开文件时,它首先在 gnome 终端中执行命令,然后在 alacritty 中启动 vim,问题是 gnome 终端保持打开状态。我还尝试创建一个脚本:
#!/bin/bash
alacritty -e vim & disown | exit
这根本不起作用。我不知道还能做什么,而且我在网上找不到任何东西。提前谢谢!
是否可以更改运行该命令的默认终端Exec=
?这样只需写入Exec=vim %F
即可在 alacritty 中运行它
答案1
muru 帮我弄清楚了到底发生了什么,谢谢!问题是我的 .desktop 文件:
[Desktop Entry]
Name=Vim
GenericName=Text Editor
Comment=Edit text files
Comment[es]=Edita archivos de texto
TryExec=vim
Exec=alacritty -e 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
。它的作用是它Exec=
在终端中执行命令,并打开终端来执行此操作。如果您设置了Terminal=false
它,将阻止任何终端打开,它只会执行命令而不打开终端。
答案2
我已经发过一个答案对 U&L 上的类似问题
TL;DR -最prepend_terminal_to_vector()
喜欢。创建一个包装器脚本,根据收到的内容调用实际的终端仿真器。gnome-terminal
/usr/local/bin/gnome-terminal
$#
$@
答案3
编辑:这有时不起作用,我不知道是什么控制着打开 vim 时使用哪个终端仿真器。
我刚刚找到了另一种解决方法:创建一个名为“xterm
你的”的符号链接$PATH
,指向你自己的终端模拟器。但我不能保证这种方法对每个人都有效。
此解决方法的优点是您不需要更改任何桌面条目文件。所有 .desktop 都Terminal=true
将使用新的终端仿真器。
当尝试使用exo-open
(类似于xdg-open
xfce 中的)执行桌面条目时,会出现一条警告消息
sh: line 0: exec: xterm: not found
所以我猜想xterm
这是程序中硬编码的,用于打开 .desktop 文件。然后我尝试创建这个符号链接
ln -s /usr/bin/st ~/.local/bin/xterm
并且运行完美。
但是实际生成的命令可能基于xterm
的参数,因此只有使用相同参数指定启动命令的终端仿真器才有效。一个相反的例子是termite
,因为它要求在选项中引用整个命令-e
。