![Выполнить vim в новом окне urxvt, сохраняя тему](https://rvso.com/image/109225/%D0%92%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D1%8C%20vim%20%D0%B2%20%D0%BD%D0%BE%D0%B2%D0%BE%D0%BC%20%D0%BE%D0%BA%D0%BD%D0%B5%20urxvt%2C%20%D1%81%D0%BE%D1%85%D1%80%D0%B0%D0%BD%D1%8F%D1%8F%20%D1%82%D0%B5%D0%BC%D1%83.png)
Я хочу создать простой скрипт для запуска nvim
(не gvim
) в отдельном окне терминала (я использую urxvt
term). В настоящее время у меня есть:
#!/usr/bin/env bash
exec urxvt -hold -e "vim"
Кажется, это нормально и работает, но проблема в том, что тема vim не загружается при открытии терминала (вероятно, потому что .bashrc
она не читается или из-за других странных проблем сbase16-оболочка).
Плагины загружаются, что означает, что загружен файл инициализации nvim. Я пытался сделать что-то вроде
exec urxvt -hold -e "source <absolute_path>/.bashrc; vim"
чтобы заставить base16-shell загрузить тему терминала (которая может быть зависимостью для темы vim), но это все равно не работает.
Я чувствую, что что-то упускаю, но не могу сделать правильно. Как заставить этот скрипт работать?
решение1
Хорошо, я решил проблему. Оказалось, что -e
флаг запускает команду, не запуская ее на самом делеинтерактивныйоболочка bash, что означает, что bash не выполняет чтение .bashrc
при запуске.
Так как base16-shell
инициализируется тема терминала (которая на самом деле является зависимостью темы base16 vim), запуск скрипта из в .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"