Я хочу создать простой сценарий для запуска nvim
(не gvim
) в отдельном окне терминала (я использую urxvt
term). На данный момент у меня:
#!/usr/bin/env bash
exec urxvt -hold -e "vim"
Все вроде бы законно и работает, но проблема в том, что тема vim не загружается при открытии терминала (возможно, потому что .bashrc
не читается или какие-то другие странные проблемы с base16-shell).
Плагины все же загружаются, что означает, что файл init nvim загружается. Я пытался сделать что-то вроде
exec urxvt -hold -e "source
чтобы заставить base16-shell загрузить тему терминала (которая может быть зависимостью для темы vim), но это все равно не работает.
Я чувствую, что я что-то упускаю, но не могу разобраться. Как заставить этот скрипт работать?
Хорошо, я решил проблему. Оказалось, что флаг -e
запускает команду без фактического запуска интерактивной оболочки bash, что означает, что bash не читает .bashrc
при запуске.
Поскольку base16-shell
инициализирует терминальную тему (которая действительно является зависимостью от темы vim base16), запуск скрипта из .bashrc
в конце nvim
запускается с цветами по умолчанию (поскольку зависимость не загружена и base16-vim не может правильно инициализироваться).
Таким образом, решение состоит в том, чтобы запустить интерактивную оболочку bash
для чтения .bashrc
и загрузки темы base16, и только после этого запустить nvim
(с псевдонимом vim
по моему поводу).
Вот весь скрипт:
#!/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"