Карта ‹S-Insert› для вставки содержимого буфера обмена в тип файла

Я хочу использовать <S-Insert> для вставки содержимого буфера обмена в vim независимо от того, нахожусь ли я в режиме normal или insert

Я использую [Fedora 23, Gnome terminal 3.18.3, vim 7.4 + xterm_clipboard]


Моя обычная проблема:

  1. Я захожу в Интернет и нажимаю Ctrl-C на нескольких строках
  2. Вернувшись к vim в режиме вставки или обычном режиме, я хочу вставить БЕЗ изменения отступа

И я получаю пасту с испорченным отступом, но только тогда, когда файл копируется как filetype, например r / python (я думаю, потому что отступ определен)


Что я нашел

Я нашел этот пост (среди прочего), но это не работает.

Как я могу заставить это работать

Когда я использую режим paste, он работает Например, если я использую

  1. Я захожу в Интернет и нажимаю Ctrl-C на нескольких строках
  2. В vim: установить пасту
  3. I do <S-Insert>

Тогда он работает независимо от режима ИЛИ типа файла, и я могу :set nopaste

Другой способ - вставить из буфера обмена "+p, который работает (без проблем с режимом paste)

Ведет ??

Дело в том, что я даже не уверен, что это vim связано, я думаю, что не могу сопоставить <S-Insert>, как будто я

nnoremap <S-Insert> <NOP>
inoremap <S-Insert> <NOP>
vnoremap <S-Insert> <NOP>

И запустите новый терминал, затем vim и попробуйте <S-Insert> он все еще копирует


person statquant    schedule 06.05.2016    source источник


Ответы (1)


Я получаю пасту с неровной выемкой

Это связано с тем, что vim принимает скопированный текст как поток введенных в него символов.

Если вы можете использовать системный буфер обмена в vim, используйте эти сопоставления

:map <silent> <S-Insert> "+p
:imap <silent> <S-Insert> <Esc>"+pa

Вы можете узнать, поддерживает ли vim буфер обмена, используя

vim --version

Если вы видите "+ xterm_clipboard", все готово. Используйте это с

set clipboard=unnamed  " or
set clipboard=unnamedplus

Если использование системной клавиатуры отсутствует, я предлагаю написать функцию, которая переводит вас в режим вставки с помощью set paste, вставляет скопированный текст, возвращает вас в нормальный режим с помощью set nopaste

person sudo bangbang    schedule 06.05.2016
comment
У меня +xterm_clipboard к сожалению, ваше исправление не работает для меня - person statquant; 06.05.2016
comment
Вы можете попробовать :map <silent> <S-Insert> "*p? т.е. * вместо + - person sudo bangbang; 07.05.2016
comment
"*p или "+p вставляет текст в буфер обмена? - person sudo bangbang; 07.05.2016
comment
Привет :map <silent> <S-Insert> "*p не работает, но ванильная вставка из буфера обмена "+p ДЕЙСТВУЕТ - person statquant; 07.05.2016