vim вставить из буфера обмена в терминале

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

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

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

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

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

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

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

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

19
задан moljac024
27.12.2022 12:22 Количество просмотров материала 3478
Распечатать страницу

3 ответа

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

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

0
отвечен Ingo Karkat 2022-12-28 20:10

Я все еще не знаю, что случилось с первым отображением, которое я пробовал, так как я считаю, что это должно работать, но, глядя в документацию 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}

1
отвечен moljac024 2022-12-28 22:27

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

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

0
отвечен Steven 2022-12-29 00:44

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх