В Vim, если я вставлю этот скрипт:
#!/bin/sh
VAR=1
while ((VAR < 10))
do
echo "VAR1 is now $VAR"
((VAR = VAR +2))
done
echo "finish"
Я получаю эти странные результаты:
#!/bin/sh
#VAR=1
#while ((VAR < 10))
# do
# echo "VAR1 is now $VAR"
# ((VAR = VAR +2))
# done
# echo "finish"
#
Появились хеш-знаки (#) и вкладки. Почему?
vim
clipboard
whitespace
elbarna
источник
источник
Ответы:
Есть две причины:
Для вставки
vim
при включенном автоматическом отступе необходимо перейти в режим вставки , набрав:Затем вы можете перейти в режим вставки и вставить свой код. После завершения вставки введите:
отключить режим вставки. Поскольку это обычное и частое действие,
vim
предлагается режим переключения пасты:Вы можете переключиться
F2
на любую клавишу, которую захотите, и теперь вы можете легко включать и выключать вставку.Чтобы отключить автоматическую вставку комментариев, вы можете добавить эти строки в ваш vimrc :
vim
также предоставляет регистр вставки для вставки текста из системного буфера обмена. Вы можете использовать"*p
или в"+p
зависимости от вашей системы. В системе без X11, такой как OSX или Windows, вы должны использовать*
регистр. В системе X11, такой как Linux, вы можете использовать оба.дальнейшее чтение
источник
set paste
никогда не должен быть в вашем vimrc. Он отключает или сбрасывает множество вещей, включая сопоставления режима вставки, сопоставления командной строки, сокращения, текстовую ширину, wrapmargin, автоиндентирование, smartindent, softtabstop, formatoptions, indentexpr и несколько других.:h paste
есть весь список. Большинство людей используют некоторые или все эти вещи и задаются вопросом, почему настройки игнорируются.:r!cat
чтобы вставить дословно.set mouse
которым можно автоматически входить и выходить из режима вставки при вставке с помощью мыши.Используйте пасту vim. То, что вы хотите, это вставить то, что находится в буфере буфера обмена "+p
Это выбирает
+
и вставляет его на место.Если вы используете Linux,
*
это буфер X / middle-click (последний выделенный текст).Тогда Вим знает, что это паста.
В противном случае vim думает, что вы ввели вставляемые ключи, и выполняет свой собственный автоматический отступ (поверх скопированного отступа) вплоть до конца вставки.
В качестве примечания, чтобы это работало над SSH, вам нужно установить опцию для вашего буфера обмена для совместного использования.
-Y
Смотрите
man ssh
для более подробной информации.источник
gvim
); vim, запущенный в эмуляторе терминала, вставляет последний удаленный текст с "* p, а не текущим выбором.set mouse?
vim --version
увидеть, была ли она скомпилирована с поддержкой буфера обмена,+xterm_clipboard
должна быть в выводеunnamed
строкой.Вкладки были вставлены, потому что у вас включен автоиндент, и вы можете отключить это поведение, отключив autoindent (
:set noai
) перед вставкой в терминал.Комментируемые строки создаются автоматическими комментариями и могут быть отключены, если отключить их.
В качестве альтернативы этим вы должны получить желаемое поведение, используя переключатели
:set paste
, вставляя отформатированный код и:set nopaste
восстанавливая нормальное поведение.источник