VIM комментирует то, что я вставляю


14

Я получил это при попытке скопировать эту суть на VIM: https://gist.github.com/w0ng/3278077

введите описание изображения здесь

Повсюду я замечаю одинаковое поведение: если я вставляю что-то, включающее комментарий, все, что следует за комментарием, вставляется с комментариями.

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

Как я могу избавиться от этого поведения?

Ответы:


26

Войдите в режим вставки перед вставкой:

:set paste

Чтобы вернуться в «нормальный» режим:

:set nopaste

6
или: установить пасту! переключаться :)
valbaca

@valbaca Вы можете использовать backticks для создания code blocksв комментариях
Izkata

Мне были нужны эти команды наоборот!

11

Помимо pasteопции, упомянутой Mat , вы также можете напрямую получить доступ к буферу обмена X из VIM:

  • "*p вставить выбор X11
  • "+p вставить буфер обмена X11

Вам нужна версия VIM с поддержкой X11 (в Debian и его производных вам необходимо установить пакет vim-gtkor vim-gnome).

Для получения дополнительной информации см. Документацию ( :help x11-selection).


6

Вот что происходит. Существуют параметры форматирования Vim, которые автоматически закомментируют новые строки, когда вы находитесь в строке комментария. Некоторые из этих параметров обычно включены по умолчанию. Например,

# a comment<CR>
# 

Как видите, к новой строке автоматически добавляется символ комментария. Вы можете отключить большинство из этих опций, удалив cи rиз настройки formatoptions. Смотрите :h fo-tableдля получения дополнительной информации об этих опциях.

:set formatoptions-=cr

Vim не может отличить текст, вставленный с помощью механизмов вставки эмулятора терминала, и текст, который вы вводите. Установка параметров вставки ( set paste) указывает Vim ожидать вставленный текст и отключать любые параметры форматирования, которые были бы нежелательны.


3

Мой любимый использует putкоманду.

  • :put* вставить из выделения в текущей строке
  • :put+ вставить из буфера в текущей строке

"*p/ "+pтоже хорошо, но :pu[t]имеет ряд преимуществ:

  • всегда приклеивается
  • Вы можете добавить дополнительный параметр для контроля, куда вставить:
    • :$put+ вставить после последней строки
    • :0put+ вставить в начало файла

1

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

ctrl+ vи затем используйте клавиши со стрелками / hjkl для навигации по частям, которые вы хотите удалить, а затем просто нажмитеd

Иногда я нахожу это быстрее, чем отмену установки режима вставки, вставки и отмены режима вставки.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.