Führen Sie Vim im neuen URXVT-Fenster aus und behalten Sie dabei das Design bei.

Führen Sie Vim im neuen URXVT-Fenster aus und behalten Sie dabei das Design bei.

Ich möchte ein einfaches Skript erstellen, das nvim(nicht gvim) in einem separaten Terminalfenster gestartet wird (ich verwende urxvtTerm). 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 .bashrces 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 -eFlag einen Befehl ausführt, ohne ihn tatsächlich zu starteninteraktiv.bashrcBash-Shell, was bedeutet, dass Bash beim Start nicht liest .

Wenn base16-shelldas Terminaldesign initialisiert wird (das tatsächlich eine Abhängigkeit vom Base16-Design von Vim ist), wird das Ausführen eines Skripts am .bashrcEnde nvimmit 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 bashShell explizit zu starten, um .bashrcdas Base16-Design zu lesen und zu laden, und erst danach zu starten nvim(was vimin 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"

verwandte Informationen