Ich möchte ein einfaches Skript erstellen, das nvim
(nicht gvim
) in einem separaten Terminalfenster gestartet wird (ich verwende urxvt
Term). Derzeit habe ich:
#!/usr/bin/env bash
exec urxvt -hold -e "vim"
Es scheint legitim und funktioniert, aber das Problem ist, dass das Vim-Design beim Öffnen des Terminals nicht geladen wird (wahrscheinlich, weil .bashrc
es nicht gelesen wird oder andere seltsame Probleme mitBase16-Schale).
Plugins werden jedoch geladen, was bedeutet, dass die Init-Datei von nvim geladen wird. Ich habe versucht, so etwas zu tun wie
exec urxvt -hold -e "source <absolute_path>/.bashrc; vim"
um die Base16-Shell zu zwingen, das Terminaldesign zu laden (was eine Abhängigkeit von einem Vim-Design sein könnte), aber es funktioniert immer noch nicht.
Ich habe das Gefühl, dass mir etwas fehlt, aber ich bekomme es nicht hin. Wie bekomme ich dieses Skript zum Laufen?
Antwort1
Ok, also habe ich das Problem gelöst. Es stellte sich heraus, dass -e
Flag einen Befehl ausführt, ohne ihn tatsächlich zu starteninteraktiv.bashrc
Bash-Shell, was bedeutet, dass Bash beim Start nicht liest .
Wenn base16-shell
das Terminaldesign initialisiert wird (das tatsächlich eine Abhängigkeit vom Base16-Design von Vim ist), wird das Ausführen eines Skripts am .bashrc
Ende nvim
mit den Standardfarben gestartet (da die Abhängigkeit nicht geladen ist und Base16-Vim nicht richtig initialisieren kann).
Die Lösung besteht also darin, die interaktive bash
Shell explizit zu starten, um .bashrc
das Base16-Design zu lesen und zu laden, und erst danach zu starten nvim
(was vim
in meinem Fall als Alias dient).
Hier ist das gesamte Skript:
#!/usr/bin/env bash
# -hold urxvt option is not needed as vim stays running
# -i bash option to run interactively
exec urxvt -e bash -i -c "vim"