Как очистить номер строки в Vim при копировании?
Я скопирую код из одной части одного файла в другую часть в vim, я нахожу, что в каждой строке есть номера строк, и формат ушел, как установить правильный формат в качестве источника?
вот так:
40 root /opt/release/current/public;
67 41 passenger_enabled on;
68 42
Ответы
Ответ 1
Если у вас есть номера строк, я вполне уверен, что вы не используете операции Vim yank/put (они никогда не будут копировать списки лент, foldcolumn, значки и т.д.), поскольку в терминах редактирования буфера они не существуют.
Я предполагаю, что вы работаете в эмуляторе терминала и используете мышь для копирования материала в буфер обмена, который, возможно, выбирает "постороннюю" комнату экрана (включая виртуальные пространства в конце, номера строк, метки разметки и т.д.),
У вас может быть установка удачи
:se mouse+=a
чтобы получить поведение мыши, как вы ожидаете. В противном случае сделайте выделение с помощью V <movement>...
y (y
для yank
, что соответствует "copy" )
Затем в пункте назначения используйте p (поместите курсор) или p (поместите перед курсором)
Сообщите мне, если это помогло или вам нужно больше информации
Ответ 2
В обычном режиме введите :se nonu
Это самый простой способ удалить номера строк, и вы сможете скопировать текст без номеров строк.
Ответ 3
Если кто-то хочет быстрее (на Linux в любом случае), я заметил, что в vim вы можете удерживать ctrl и перетаскивать область, которую хотите скопировать, и вы избежите номеров строк и выберите нужную часть.
Действия
- ctrl и перетащить область
- release ctrl
- копия (сочетание клавиш или щелчок правой кнопкой мыши)
Ответ 4
Постоянное решение для этого - добавить приведенный ниже код в конец вашего файла .vimrc
расположенного в вашем домашнем каталоге.
se mouse+=a
Добавив это, вы сможете выбрать только текст, а не номера строк, как показано на рисунке ниже:
![enter image description here]()
Если вы не получаете ваш файл .vimrc
в своем домашнем каталоге (я столкнулся с этой проблемой), введите команду :scriptnames
в редакторе vi, он покажет местоположение вашего файла .vimrc
. Ссылка
Ответ 5
Все ранее введенное решение очень хорошее. Однако иногда вы используете vim на удаленном сервере (поэтому вы не можете скопировать в буфер обмена с помощью "+y
). Часто терминалы поддерживают операцию копирования пасты.
Я использую vim для вывода визуального выделения в новую оболочку, где я могу скопировать текст с помощью функции терминала:
:'<,'>w ! bash -c cat
Затем я могу легко скопировать вывод.
Такой же шаблон для вставки в vim:
:r ! bash -c cat
Затем я вставляю и отправляю EOF в cat, используя Ctrl + d. Этот метод также позволяет избежать повторного ввода текста, который вы вставляете (Примечание: вы можете отключить автоматический отступ с помощью :set pi!
).
Ответ 6
Посмотрите на параметр pastetoggle, который иногда устанавливается на F11.
В качестве альтернативы вы всегда можете написать раздел, который хотите скопировать во временный файл
(ma
, перейти к конечной строке, затем использовать :'a,.w tempfile
), а затем прочитать его во второй файл.
Для дальнейшего исследования вы можете посмотреть опцию autoindent.
Ответ 7
В Windows VIM GUI: :set nu
, а затем удерживайте Ctrl - Shift, пока
выделение требуемого текста мышью. Это занимает номера строк
в буфер.
Ответ 8
Я отобразил приведенную ниже команду на ключ.
Он удаляет пробелы вокруг скопированных номеров строк.
Он игнорирует текст строки и любые пустые строки.
:1,$s/^\s*[0-9]\+\s//\|1,$s/^\s*[0-9]\+\n/\r/<cr>
Ответ 9
Вы также можете рассмотреть возможность использования sed
и pbcopy
для копирования строк в буфер обмена, где вы можете вставить их в другой терминал или приложения вне vim.
sed -n <line start #>,<line end #>p <file name> | pbcopy
Ответ 10
На Mac: я обнаружил, что вы можете выбрать нужную область с помощью Option + Command и скопировать ее в другой редактор.