Могу ли я отправлять команды в уже открытый сеанс tmux?

Я начал использовать vim пару месяцев назад, и мне это нравится. В основном я кодирую на панели vim (используя iTerm2 в OS X), и я поддерживаю консоль ipython внутри сеанса экрана на другой панели. Мне удалось найти способ отправить строки кода или даже весь скрипт из vim для выполнения на консоли ipython, но я не знаю, возможно ли это с помощью tmux. Все остальные говорят мне перейти с экрана на tmux (что на самом деле кажется хорошим советом, в свете возможностей tmux), но прежде чем сделать прыжок, я хотел убедиться, что это возможно.


person user2734434    schedule 01.05.2015    source источник


Ответы (2)


Да, можно отправлять команды в уже открытый сеанс tmux. я рекомендую вам использовать этот плагин vim-tmux-runner . вы можете посмотреть это Vim & Tmux видео с демонстрацией подключаемого модуля Джека Франклина.

person Franklin    schedule 01.05.2015
comment
Я отмечу ваш ответ как правильный, спасибо за вашу помощь. Я также сам добавил ответ с более подробной информацией о его реализации в моем ежедневном рабочем процессе; думал, что это может помочь проиллюстрировать его использование. Спасибо еще раз. - person user2734434; 03.05.2015

Основываясь на ответе/совете byaruhaf, мне удалось отправить команды в уже открытый сеанс tmux. Я подумал, что добавлю сюда небольшое руководство, чтобы все остальные могли воспользоваться этим.

Я установил vim-tmux-runner и отредактировал файл .vimrc следующим образом:

let g:vtr_filteype_runner_overrides = {
    \ 'python': '%run {file}' }
augroup Pythonic
    autocmd!
    autocmd FileType python nmap <leader>l :VtrSendFile<CR>
    autocmd Filetype python xmap <leader>l :VtrSendLinesToRunner<CR>
augroup END

Позвольте мне немного объяснить это. Первая строка autocmd позволяет нажать <leader>l в НОРМАЛЬНОМ режиме и заставить vim-tmux-runner отправить '%run {filename}' в сеанс tmux, в котором запущен сеанс ipython (это мой рабочий процесс). Обратите внимание, что строка 'let' вверху — это та, которая устанавливает команду, которую должен запускать VtrSendFile, как '%run'. (В этой же строке обратите внимание, что "филтейп" - это не опечатка, он работает так, а не с "типом файла").

Вторая строка autocmd позволяет выбрать несколько строк в vim и, находясь в ВИЗУАЛЬНОМ РЕЖИМЕ, нажать <leader>l и отправить эти строки в сеанс tmux ipython. Поскольку вставка кода в ipython может быть сложной, есть и другие варианты, которые могут быть полезны в этом случае, просто проверьте документацию на vim-tmux-runner для получения дополнительной информации.

Спасибо byaruhaf за отличный совет.

person user2734434    schedule 03.05.2015