Исправить Vim + Tmux yank / вставить в безымянный регистр



при использовании vim внутри сеанса tmux я не могу дергать или вставлять в безымянный регистр. Переход к именованному регистру работает нормально, но безымянный никогда не работает.

ошибка:

E353: Nothing in register *

без tmux vim отлично работает с моими текущими настройками. Как мне это исправить, чтобы я мог использовать y затем p без ошибок и без указания регистра?

147   5  

5 ответов:

из сообщения об ошибке (Nothing in register *), получается, что когда вы делаете простой?p, ваш экземпляр Vim использует * зарегистрироваться вместо безымянный регистр*. Это наверное потому, что ваш clipboard опции содержит значение unnamed. При настройке таким образом Vim будет использовать * Регистрация вместо безымянного регистра для операций yank, delete, change и put по умолчанию (т. е. если вы не укажете другой регистр с " префикс; например,"ap поставить от a Регистрация).

*безымянный регистр на самом деле зовут " (двойная кавычка). Это только "безымянный" в том смысле, что вам не нужно называть его, чтобы использовать его (это по умолчанию). То есть вы не должны говорить ""p поставить из безымянного реестра, просто p.

значение по умолчанию clipboard не содержит unnamed, так что это, вероятно, идет из какой-то части вашей конфигурации (или плагина). Команда :verbose set clipboard? покажет вам скрипт, который устанавливает текущее значение. Если это делается в файле конфигурации, то вы можете не делать это, когда вы работаете под tmux. Например:

if $TMUX == ''
    set clipboard+=unnamed
endif

кроме того, может быть какой-то способ разрешить экземпляры Vim-inside -tmux доступ к выбору GUI / буфер обмена (таким образом, работать с * зарегистрируйтесь и/или unnamed на clipboard). Если вы не запуск Mac OS X, вы можете посмотреть на мой обходной путь обертки что повторно включает доступ к буферу обмена для процессов, работающих внутри tmux сессии. Если вы используете какую-либо другую ОС или графический интерфейс, вам нужно будет узнать, как Vim обычно разговаривает с графическим интерфейсом и почему он не работает (например, неправильное значение отображения под X11, возможно, из-за присоединения к старому сеансу, в котором работает оболочка, которая имеет устаревшее значение).

вот что работает для меня в vim / tmux / osx:

  1. установить доморощенного
  2. установить присоедините к пользователю-пространства имен: brew install reattach-to-user-namespace
  3. in .vimrc: set clipboard=unnamed
  4. скажите tmux использовать системный буфер обмена: В.tmux.conf:set-option -g default-command "reattach-to-user-namespace -l bash"

Источник:https://coderwall.com/p/j9wnfw

The fakeclip плагин делает регистр буфера обмена вести себя так, как ожидалось во многих терминалах и имеет поддержку tmux/screen. Ты им пользуешься? Это может решить вашу проблему.

кроме того, вы можете быть заинтересованы в этом наконечнике... Это не применимо к вашему вопросу, но связано. В зависимости от того, какой тип системы/терминала вы используете tmux, вам могут понадобиться некоторые настройки в вашем .tmux.conf. Например вот отрывок из моего .tmux.conf на OS X (с некоторыми инструкциями комментарии):

# To use pbcopy and pbpaste on OS X, get this wrapper and install
#    git clone https://github.com/ChrisJohnsen/tmux-MacOSX-pasteboard.git
#    cd tmux-MacOSX-pasteboard/
#    make reattach-to-user-namespace
#    mv reattach-to-user-namespace /usr/local/bin
# After installing, the default command can be reset to use the 'reattach-to-user-namespace' 
# wrapper that was compiled/installed as descripted above.
set -g default-command "reattach-to-user-namespace -l /bin/bash"
# #Next, create Ctrl-c and Ctrl-v mappings
bind C-c run "tmux save-buffer - | reattach-to-user-namespace pbcopy"
bind C-v run "tmux set-buffer $(reattach-to-user-namespace pbpaste); tmux paste-buffer"

поздний ответ, но это также может быть, что ваш .tmux.conf содержит следующую строку:

set -g set-clipboard off

в сочетании с .vimrc содержащих

set clipboard=unnamed

это приведет к тому, что vim попытается использовать буфер обмена, которого там нет.

чтобы добавить пару заметок из моего опыта на OSX к принятому ответу:

  • убедитесь, что вы делаете set clipboard=unnamed, а не set clipboard=unnamedplus
  • мне пришлось убить мой сервер tmux ($ killall tmux или $ tmux kill-session -a). Перезагрузка файлов конфигурации tmux показала, что команда по умолчанию была установлена, но не давала vim доступа к системному буферу обмена.
    Ничего не найдено.

Добавить ответ:
Отменить.