1

Я пытаюсь написать отображение режима вставки для вставки из системного буфера обмена. У меня есть это:

imap <c-p> <c-o>:set paste<cr><c-r><c-r>+<c-o>:set nopaste<cr>

(Обратите внимание, что это должно работать в соответствии с этим)

Однако при вызове сопоставления клавиш он не работает, он останавливается на заданной части вставки, поэтому я просто заканчиваю с включенным режимом вставки.

Но если я сделаю все эти ключи вручную, то получу то, что хочу ... так что же отличается, когда команды находятся под раскладкой? Чего мне не хватает, чтобы сделать эту работу?

Я также попробовал это:

imap <c-p> <esc>"+gP

Это приводит к множеству ошибок, связанных с тем, что gP является неизвестной переменной, но такое же отображение в обычном режиме работает, как и ожидалось ... так что же отличается от отображений в режиме вставки?

3 ответа3

1

Я до сих пор не знаю, что не так с первым попробованным мэппингом, так как считаю, что он должен работать, но, изучая документацию vim (в частности:help i_CTRL-R), я нашел лучшее решение:

inoremap <c-p> <c-r><c-o>+

Из документов:

CTRL-R CTRL-O {0-9a-z "% # *+/:.- =} i_CTRL-R_CTRL-O Вставить содержимое регистра буквально и не делать авто-отступ. Делает так же, как вставка мышью ||. Не заменяет персонажей! "." регистр (последний вставленный текст) все еще вставляется как напечатанный. {не в Vi}

0

Вам не нужно :set paste при вставке содержимого буфера обмена с помощью i_CTRL-R . Благодаря команде Vim уже знает, что это из буфера обмена. :set paste для когда вы вставляете напрямую из терминала (например, с помощью средней кнопки мыши); там Vim не может различить символы, напечатанные или вставленные, и нуждается в этом подсказке.

Чтобы избежать автоматического отступа, используйте i_CTRL-R_CTRL-O .

0

Эта вторая команда imap должна работать нормально. Насколько я понимаю, он должен выйти из режима вставки, вставить из одного из системных буферов обмена (+), а затем оставить курсор после вставленного текста.

Я подозреваю, что вы используете vi, а не vim, или ваш vim находится в совместимом режиме. В документации для ["x] gP (:help gP) написано" not in vi ", так что это может быть вашей проблемой

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .