Подтвердить что ты не робот

Как очистить номер строки в Vim при копировании?

Я скопирую код из одной части одного файла в другую часть в vim, я нахожу, что в каждой строке есть номера строк, и формат ушел, как установить правильный формат в качестве источника?

вот так:

            40         root /opt/release/current/public;
 67             41         passenger_enabled on;
 68              42 
4b9b3361

Ответ 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 и скопировать ее в другой редактор.