13

Просто попытался вставить некоторый контент (в Git Bash на сервере CentOS) в файл, используя vim.
Я просто открыл файл и попытался использовать shift+insert, и я заметил, что первая половина (примерно) обрезается, но если я установил vim для режима вставки и нажал shift+insert, все вставлялось идеально.
Было просто интересно, почему это так?

Спасибо

1 ответ1

24

Shift + Insert и « вставка » в терминал ведут себя одинаково - они эмулируют нажатия клавиш.

Это важное различие, которое часто невозможно сделать терминалами - вы печатаете или вставляете? Примечание: некоторые терминалы поддерживают режимы " вставки в скобках ", после комментария @ Джоша я даже наткнулся на вставку в скобках vim в xterm, которая может вас заинтересовать.

Ваши вставленные данные будут потеряны до первого символа, который входит в режим вставки. Вы также можете обнаружить, что ваш курсор перемещен и что другие части файла изменились (например: изменен регистр / был удален / и т.д.)...

Таким образом, если вы вставляете текст, который хотите вставить в файл, сначала войдите в режим вставки.


Попробуйте скопировать следующий текст и вставить его в терминал с Vim (не в режиме вставки):

hello how are you

Результат такой же, как при наборе одинаковых букв на клавиатуре:

результат вставки в Vim

В этом случае он оставляет вас в режиме вставки ...

Теперь попробуйте выйти из режима вставки - Esc - и вставьте следующее

/are
n

Это выполняет поиск "являются":

результат вставки в Vim

Теперь вставьте это:

:0
dG

О нет ... все прошло!

все ушли


Вы также обнаружите, что если у вас включен отступ, то вставка блока кода в vim (в режиме вставки) сделает слишком много отступов - это автоматически сделает отступ, а затем вставленный код будет содержать отступы.

def my_print(message):
    print(message)
    print('done...')

вставка кода

Чтобы это исправить, используйте команды :set paste и :set nopaste

вставка кода (режим вставки)

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