Как копировать и вставлять между различными областями tmux под управлением экземпляров vim



пример: скопируйте в одну панель tmux (через vim), затем переключитесь на другую панель (запустив другой экземпляр vim) и вставьте с помощью команды Vim paste. Я знаю, что это можно сделать через tmux (используя префикс+]), но было бы очень удобно, если бы я мог копировать и вставлять с помощью Привязок vim, так как я просто переключаюсь между разными панелями, работающими под управлением vim.



какие идеи?

703   6  

6 ответов:

Извините, я пытаюсь убедить вас использовать встроенные функции vim.


сделать copy/paste легко, вы можете открыть файлы в других вкладках:

:tabe /path/to/another/file

использовать gt или gT для переключения Tabpages.


или разделить окно для редактирования другого файла:

:sp /path/to/another/file

использовать Ctrl-w w для переключения окон.
Чтобы разделить окно по вертикали, пожалуйста, используйте :vsp file


обновление:

это мой .tmux.conf file:

# 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 cursor 

The "+ регистр используется для доступа к системе 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_clipboard

vimx является частью Vim-enhanced-2: 7.4.1868-1.fc24.x86_64 вы скорее всего установили

Comments

    Ничего не найдено.