vim cut&paste не работает в Stretch / Debian 9

vim cut&paste не работает в Stretch / Debian 9

Обновил несколько виртуальных серверов до Debian 9.

Теперь при использовании sshмы не можем копировать и вставлять между удаленными терминалами.

Курсор, похоже, совершает движения и отмечает текст, хотя и более забавным/необычным способом, чем обычно, но ничего не копируется, кроме как в буфер обмена при нажатии command-C / command-V или копировании и вставке в соответствующем меню.

Мы также пробовали выполнять движения мыши с помощью Shift и других комбинаций клавиш, но безрезультатно.

Это происходит в OS/X, а именно Sierra и El Capitan, а также в Windows, с использованием терминалов mobaXterm.

Такая ситуация возникла из-за того, что vim осознает наличие у себя мыши.

После других вопросов на Stack Overflow я создал /etc/vim/vimrc.localс помощью set mouse="r"и set mouse="v; это не сработало.

Наконец, настройка set mouse=""в том же файле, с некоторым умеренным успехом.

Однако это также не работает хорошо в 100% случаев. Что еще можно сделать?

решение1

Решение: измените mouse=aна mouse=rв локальном .vimrc.

Проблема с установкой этого в том, /usr/share/vim/vim80/defaults.vimчто, как говорится в принятом ответе, он будет перезаписан при каждом обновлении. Я долго искал и остановился на этом: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=864074

ЛОКАЛЬНОЕ РЕШЕНИЕ(недостатки):
Первое решение — использовать локальные файлы .vimrc и установить их там. Так что вы можете создать локальный .vimrc ( ~/.vimrc) для каждого пользователя и задать там свои параметры. Или создать один в /etc/skel, чтобы он автоматически создавался для каждого нового пользователя, которого вы создаете.

Но когда вы используете локальные .vimrcфайлы, вам нужно установить все параметры там, потому что если есть локальный .vimrc, то он defaults.vimвообще не загружается! А если локального нет, то .vimrcвсе ваши настройки перезаписываются из defaults.vim.

ГЛОБАЛЬНОЕ РЕШЕНИЕ(предпочтительно):
Мне нужна была глобальная конфигурация для всех пользователей, которая загружала бы параметры по умолчанию, а затем добавляла бы или перезаписывала значения по умолчанию моими личными настройками.К счастью, в Debian есть такая возможность: будет /etc/vim/vimrc.localзагружен после /etc/vim/vimrc. Таким образом, вы можете создать этот файл и загрузить значения по умолчанию, предотвращая их повторную загрузку (в конце), а затем добавить свои личные параметры:

Пожалуйста, создайте следующий файл:/etc/vim/vimrc.local

" This file loads the default vim options at the beginning and prevents
" that they are being loaded again later. All other options that will be set,
" are added, or overwrite the default settings. Add as many options as you
" whish at the end of this file.

" Load the defaults
source $VIMRUNTIME/defaults.vim

" Prevent the defaults from being loaded again later, if the user doesn't
" have a local vimrc (~/.vimrc)
let skip_defaults_vim = 1


" Set more options (overwrites settings from /usr/share/vim/vim80/defaults.vim)
" Add as many options as you whish

" Set the mouse mode to 'r'
if has('mouse')
  set mouse=r
endif

(Обратите внимание, что $VIMRUNTIMEв приведенном выше фрагменте используется значение типа /usr/share/vim/vim80/defaults.vim.)

Если вы также хотите включить «старое поведение копирования/вставки», добавьте следующие строки в конец этого файла:

" Toggle paste/nopaste automatically when copy/paste with right click in insert mode:
let &t_SI .= "\<Esc>[?2004h"
let &t_EI .= "\<Esc>[?2004l"

inoremap <special> <expr> <Esc>[200~ XTermPasteBegin()

function! XTermPasteBegin()
  set pastetoggle=<Esc>[201~
  set paste
  return ""
endfunction

решение2

Похоже, одним из способов отключить распознавание мыши в vim является комментирование конфигурации мыши.

В /usr/share/vim/vim80/defaults.vimя закомментировал специфическое для мыши обнаружение следующим образом:

" In many terminal emulators the mouse works just fine.  By enabling it you
" can position the cursor, Visually select and scroll with the mouse.
"if has('mouse')
"  set mouse=r
"endif

(в этих файлах конфигурации vim " инициирует комментарий).

Это изменение позволило нам снова копировать и вставлять без каких-либо проблем.

Я согласен с комментариями, что это не идеальное решение, поскольку оно действительно перезаписывается в любое обновление, если только файл конфигурации не защищен (или не перенаправлен). В то время и из-за особенностей версии пакета или конфигурации серверов, на которых я работал, это было единственное, что работало. Поэтому я оставляю этот ответ здесь, иего следует использовать только как последнее средство.

решение3

TheДокументация Vim для mouseопцииговорит

Обработку кнопок мыши xterm можно по-прежнему использовать, удерживая нажатой клавишу Shift.

решение4

Многие предлагали это :set mouse=a, но я обнаружил, что это :set mouse=rпозволяет копировать и вставлять только в Vim на Debian 9. Удачи!

Связанный контент