![Standardanwendung xdg-open auf Terminalprogramm festlegen](https://rvso.com/image/36030/Standardanwendung%20xdg-open%20auf%20Terminalprogramm%20festlegen.png)
Ist es möglich, Terminal Vim mit xdg-open zu verwenden?
Ich habe keinen GUI-Texteditor, da ich vim nur über das Terminal verwende. (gvim ist mir auch ziemlich egal.) Kann ich xdg-open anweisen, ein Terminal zu öffnen und dann vim mit der ausgewählten Datei zu öffnen?
Danke.
Antwort1
Exportieren Sie in Ihre .bashrc- oder .zshrc-Datei, je nachdem, ob Sie bash oder zsh verwenden, diese beiden Umgebungsvariablen:
export EDITOR=vim
export VISUAL=vim
Darüber hinaus möchten Sie vim möglicherweise mit dem MIME-Typ von Textdateien verknüpfen:
xdg-mime default vim.desktop text/plain
Jetzt müssen Sie eine vim.desktop-Datei erstellen /usr/share/applications
, die den gewünschten Terminalemulator ausführen und vim öffnen sollte.
Antwort2
Ich muss eine neue Antwort hinzufügen, auch wenn mein Kommentar die Antwort nur ergänzt, indemAbonnieren, da in den Kommentaren kein Code eingerückt werden kann.
Der Inhalt vim.desktop
kann etwa wie folgt aussehen:
[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;
Ich ziehe es vor, es unter zu platzieren ~/.local/share/applications
.
Antwort3
Kurz zusammengefasst
$ xdg-mime default vim.desktop <MIMETYPE>
Oder bearbeiten ~/.config/mimeapps.list
.
MIMETYPE ist die Ausgabe von$ xdg-mime query filetype <interested-file>
Wenn Sie eine Desktop-Umgebung (KDE, GNOME, LXQT usw.) verwenden, sollten Sie die Dokumentation Ihrer DE zu Rate ziehen. Aber es gibt dieXDG-Standardzum Festlegen von Standardanwendungen für bestimmte MIME-Typen. MIME-Typen sind eine Möglichkeit, einen Dateityp von einem anderen zu unterscheiden, siehe Wikipedia, oderErzwiki. Beispielsweise gibt es text/html
den MIME-Typ für *.html
Dateien und text/plain
für *.txt
Dateien. Den MIME-Typ können Sie mit bestimmen $xdg-mime query filetype <file_you_interested>
.
Mime-Typen werden verwendet, um Anwendungen mit Dateien zu verknüpfen, die diese Anwendungen öffnen sollen.
Das Öffnen ~/.config/mimeapps.list
sieht auf meinem Rechner etwa so aus:
[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]
Dem Abschnitt diese Zeilen hinzufügen
text/plain=vim.desktop
text/markdown=vim.desktop
text/html=vim.desktop
(Fügen Sie weitere MIME-Typen hinzu, falls Sie sie benötigen)
vim.desktop
Auf meinem Rechner befindet sich die Datei /usr/share/applications
mit folgendem Inhalt:
[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++;
(Es gibt tatsächlich viele Übersetzungen von Namen und Kommentaren, aber sie spielen hier keine Rolle.)
Schauen Sie sich die Zeile an Terminal=true
.
Gemäß den Regeln in der XDG Desktop Entry Specification besagt diese Zeile, dass der Launcher den Terminalemulator öffnen soll und dann in diesem Terminalfenster Ihre App geöffnet werden soll ( Exec
Zeile). Gut, oder?
Es gibt jedoch einefünf Jahre alter Fehler in xdg-openund xdg-open- Terminal
Taste ignorieren, da keine Spezifikation für den Standard-Terminalemulator vorhanden ist.
(Sie versuchten, aber im Jahr 2020 gibt es noch keine Spezifikation.)
Wenn Sie also DE nicht verwenden, beachtet xdg-open die Desktop Entry Specification nicht für Sie. Die Person, die den Fehler gemeldet hat, hat einen Patch erstellt (der leider ignoriert wurde), der die Variable $TERMINAL überprüft und den Terminalemulator öffnet, sodass Sie Ihr /usr/bin/xdg-open (oder $ which xdg-open
) patchen können.
Wenn Sie das Skript nicht selbst ändern möchten xdg-open
, können Sie einige Workarounds verwenden:
Sie können (sofern in Ihrem System
gvim.desktop
vorhanden ) oder (qt-Frontend für ) verwenden .gvim
nvim-qt.desktop
neovim
Sie können eine Datei mit einem Namen wie
my-vim.desktop
dem folgenden Inhalt erstellen:
[Desktop Entry]
Type=Application
Name=MyVim
Exec=<COMMAND TO RUN YOUR TERMINAL> vim %F
Terminal=false
Icon=gvim
Categories=Utility;TextEditor
Und platzieren Sie es in ~/.local/share/applications
.
Den Befehl zum Ausführen Ihres Terminals erhalten Sie von der Manualpage des bevorzugten Terminals (z. B. gnome-terminal -e
).
Weitere Einzelheiten finden Sie in den Desktop-Eintrag-Spezifikationen.
- Sie können den
xdg-open
Quellcode irgendwie lesen und Ihr System so optimieren, dassxdg-open
es denkt, Sie verwenden DE und DE-spezifische Tools aufruft, aber ich finde das seltsam.
Nützliche Links:
XDG-Mime-Handbuchseite -https://linux.die.net/man/1/xdg-mime
Arch-Wiki über XDG-MIME-Typen -https://wiki.archlinux.org/index.php/XDG_MIME_Applications
Arch-Wiki zum XDG-Desktop-Eintrag -https://wiki.archlinux.org/index.php/Desktop_entries#Application_entry
xdg-open-Problem -https://gitlab.freedesktop.org/xdg/xdg-utils/-/issues/84