Как открыть файл в другой панели в Tmux
Я новичок в tmux и разделил окно на 3 панели, левую половину (основную панель), верхнюю правую четверть и нижнюю правую четверть. Возможно ли, что я использую команду, чтобы открыть редактируемый файл в левой главной панели, скажем, vim myFile.py
, и myFile.py откроется в другой панели, скажем, в верхней правой панели, так что я всегда смогу отредактировать файл в верхней правой панели и сохранить входные команды в левой главной панели?
2 ответа
Это возможно сделать с помощью функций vim, но это не имеет ничего общего с tmux. Если используемая вами версия vim была скомпилирована с +clientserver
вариант, то есть способ сделать это. Чтобы проверить, запустите :version
в VIM, и искать +clientserver
, Возможности клиентского сервера vim зависят от X11, поэтому, если вы его не видите, установка gvim может помочь. См. https://unix.stackexchange.com/a/23601 для получения дополнительной информации о зависимости X11.
Теперь о том, как его использовать. Во-первых, настройте свои панели tmux так, как вы хотите. На панели, которой вы хотели бы быть в качестве выделенного редактора, следующая команда создаст vim "сервер".
vim --servername tmuxEditor
Теперь из другой панели вы можете запустить
vim --servername tmuxEditor --remote files...
и редактор откроет указанные файлы. Другие полезные команды
vim --servername tmuxEditor --remote-tab files...
vim --servername tmuxEditor --remote-send keys
Первый открывает указанные файлы в отдельных вкладках, а второй отправляет указанную последовательность ключей на сервер.
См. http://vimdoc.sourceforge.net/htmldoc/remote.html или запустите :help remote
в vim для получения дополнительной информации о возможностях клиент-сервера vim.
Вот как открыть файл в существующем экземпляре Vim (если он запущен внутри сеанса tmux):
tmux send-keys -t vim:1.0 Escape ":tabnew path/to/your_file.txt" C-m
где vim:1.0
это селектор панели (vim
- название сессии, 1
- индекс окна, 0
- индекс панели).
TL;DR: вы можете использовать tmux
открывать команды в панелях, отличных от текущей, но решение dpk2442, использующее vim
Клиент / серверные функции, вероятно, чище.
Один из вариантов - установить remain-on-exit
в правом верхнем углу, затем используйте respawn-pane
команда начать vim
в панели.
Скажем, идентификатор панели в верхней правой панели 0:0.1
(сеанс 0, окно 0, панель 1; вам необходимо настроить это для вашей настройки). Вы можете установить remain-on-exit
вариант использования
tmux set-option -t 0:0 remain-on-exit on
(Это устанавливает параметр для любой панели в окне, а не только для одной конкретной панели.)
Затем используйте
tmux respawn-command -k -t 0:0.1 vim myFile.py
открыть vim
в панели, указанной аргументом -t
вариант. -
k` гарантирует, что любая команда, уже запущенная в панели, будет убита; Вы можете опустить его, если знаете, что в данный момент на этой панели ничего не выполняется.
Дайте длину команды, вы, вероятно, захотите определить функцию оболочки для запуска vim
в нужной панели:
start_vim () {
tmux respawn-command -k -t 0:0.1 vim "$1"
}
так что вы можете просто бежать
start_vim myFile.py