Как копировать и вставлять между различными областями tmux под управлением экземпляров vim
пример: скопируйте в одну панель tmux (через vim), затем переключитесь на другую панель (запустив другой экземпляр vim) и вставьте с помощью команды Vim paste. Я знаю, что это можно сделать через tmux (используя префикс+]), но было бы очень удобно, если бы я мог копировать и вставлять с помощью Привязок vim, так как я просто переключаюсь между разными панелями, работающими под управлением vim.
какие идеи?
6 ответов:
Извините, я пытаюсь убедить вас использовать встроенные функции vim.
сделать
copy/pasteлегко, вы можете открыть файлы в других вкладках::tabe /path/to/another/fileиспользовать gt или gT для переключения Tabpages.
или разделить окно для редактирования другого файла:
:sp /path/to/another/fileиспользовать Ctrl-w w для переключения окон.
Чтобы разделить окно по вертикали, пожалуйста, используйте:vsp file
обновление:
это мой
.tmux.conffile:# vim setw -g mode-keys vi bind [ copy-mode bind -t vi-copy v begin-selection bind -t vi-copy y copy-selection bind -t vi-copy V rectangle-toggle bind ] paste-buffer # buffer bind Space choose-bufferЯ использую только когда мне нужно скопировать вывод терминала.
я использовал эту удобную привязку в течение нескольких лет :)
" copy to buffer vmap <C-c> :w! ~/.vimbuffer<CR> nmap <C-c> :.w! ~/.vimbuffer<CR> " paste from buffer map <C-p> :r ~/.vimbuffer<CR>
хотя я согласен, что лучше просто использовать один экземпляр vim, вы можете сделать это только с tmux. Он имеет встроенный режим копирования. Мой tmux.conf настраивается следующим образом:
setw -g mode-keys vi unbind [ unbind p bind C-y copy-mode bind p paste-buffer bind -t vi-copy v begin-selection bind -t vi-copy y copy-selection bind -t vi-copy Escape cancelтак что вы можете использовать
prefix-<C-y>для активации режима копирования,/search termв качестве примера, чтобы пойти, где вы хотите,vчтобы визуально выбрать,yдергать в tmux. Затем перейдите в другой сеанс vim и перейдите в режим вставки. Используйтеprefix-pчтобы вставить то, что находится в буфере вставки tmux. Существуют также способы, чтобы скопировать буфер tmux вставить в системный буфер обмена.
в настоящее время я застрял с ноутбуком под управлением Windows на работе, но я делаю все свои разработки на сервере под управлением Linux, поэтому я в конечном итоге работаю в сеансе tmux над замазкой весь день.
Я хотел скопировать текст между экземплярами vim, работающими в разных окнах в моей сессии tmux. Я пробовал использовать
*регистрация для копирования в системный буфер обмена, но поскольку я подключен через PuTTY, у меня нет сеанса X, так что и нет системного буфера обмена, даже если я запускаю gVim вместо ВИМ. (Возможно, я мог бы использовать X-forwarding или что-то еще, чтобы исправить это, но я не хотел устанавливать x-сервер в windows.)Я думал, что должен быть способ использовать буфер копирования/вставки tmux из vim вместо системной клавиатуры, и, конечно же, кто-то написал плагин для этого.
установка fakeclip добавляет новый регистр,
&, который сопоставляется с буфером вставки tmux. Поскольку все мои экземпляры vim находятся в одном tmux сессия, это делает его супер просто, чтобы выдернуть/вставить между ними.в документации плагина говорится, что fakeclip также должен работать с экраном gnu, но я лично не проверял это.
tl; dr
установить fakeclip плагин, и затем вы можете использовать "&y до Янк в буфер tmux, а "&p к поставить из буфера tmux.
вы можете скопировать содержимое в буфер обмена с помощью Привязок vim, а затем переключиться на панель и вставить его. Следующие привязки клавиш могут быть удобными.
noremap ty "+y noremap tY "+Y // copy a whole line to the clipboard noremap tp "+p // put the text from clipboard after the cursor noremap tP "+P // put the text from clipboard before the cursorThe
"+регистр используется для доступа к системе clipborad в Vim.несколько полезных советов:
1. Вы можете нажатьvилиVилиctrl-vчтобы войти в визуальный режим, выберите содержимое, которое вы хотите выдернуть, и нажмитеty, чтобы скопировать его в буфер обмена.
2.tyсмогите быть совмещено с другое движение. Например,tyawможно использовать для копирования слова под курсором в буфер обмена.tyibскопируйте содержимое в скобках.tyi"скопируйте текст внутри двойной цитаты и т. д...см. также как сделать Vim вставить из (и скопировать в) буфер обмена системы? для дальнейшего объяснения.
решение о Fedora24
вы должны использовать vimx вместо ВИМ
положить в свой .bashrc или .zshrc
alias vi='vimx' alias vim='vimx'и тогда вы можете легко скопировать между панелями vims / tmux
$ vim --version | grep clipboard -clipboard +insert_expand +path_extra -toolbar +eval +mouse_dec +statusline -xterm_clipboard $ vimx --version | grep clipboard +clipboard +insert_expand +path_extra +toolbar +eval +mouse_dec +statusline +xterm_clipboardvimx является частью Vim-enhanced-2: 7.4.1868-1.fc24.x86_64 вы скорее всего установили
Comments