Как в Vim лучше всего выделить, удалить или закомментировать большие части многоэкранного текста?

StackOverflow https://stackoverflow.com/questions/58584

  •  09-06-2019
  •  | 
  •  

Вопрос

Выбрать большой объем текста, который занимает множество экранов в IDE, такой как Eclipse, довольно легко, поскольку вы можете использовать мышь, но как лучше всего это сделать, например?выбирать и удалять многоэкранные блоки текста или писать, например.три больших метода в другой файл, а затем удалить их в целях тестирования в Vim при использовании его через putty/ssh, где вы не можете использовать мышь?

Я могу легко дернуть до конца строки или дернуть до конца блока кода, но если текст занимает много экранов или содержит много пустых строк, я чувствую себя руки связаны в Vim.Есть решения?

И сопутствующий вопрос:есть ли способ каким-то образом выбрать 40 строк, а затем закомментировать их все (с помощью «#» или «//»), как это принято в большинстве IDE?

Это было полезно?

Решение

Ну, во-первых, вы можете установить vim работать с мышью, что позволит вам выделять текст так же, как в Eclipse.

Также можно использовать Визуальное выделение – в, по умолчанию.После выбора вы можете yank, cut, и т. д.

Что касается комментирования блока, я обычно выбираю его с помощью VISUAL, тогда делай

:'<,'>s/^/# /

Замена начала каждой строки на #.( '< и '> маркеры являются началом визуального выделения.

Другие советы

Используйте маркеры.

Перейдите к верхней части текстового блока, который хотите удалить, и введите

ma

где угодно на этой линии.Двоеточие не нужно.

Затем перейдите в конец блока и введите следующее:

:'a,.d

Вход ma установил маркер a для символа под курсором.

Команда, которую вы ввели после перехода в нижнюю часть текстового блока, говорит: «из строки, содержащей символ, описанный маркером a ('а) на текущую строку (.) dудалить.»

Подобные вещи можно использовать и для других целей.

:'a,.ya b     - yank from 'a to current line and put in buffer 'b'
:'a,.ya B     - yank from 'a to current line and append to buffer 'b'
:'a,.s/^/#/   - from 'a to current line, substitute '#' for line begin
(i.e. comment out in Perl)
:'s,.s#^#//#  - from 'a to current line, substitute '//' for line begin
(i.e. comment out in C++)

Н.Б. 'a (апостроф-а) относится к строке, содержащей символ, отмеченный a.`` а(backtick-a) refers to the character marked byа`.

Чтобы вставить комментарии, выберите начальные символы строк, используя CTRL-в (блочно-визуальный, а не визуальный символ «v» или линейно-визуальный «V»).Затем перейдите в режим вставки, используя «I», введите символы комментария в первой строке (например, «#») и, наконец, перейдите в обычный режим, используя «Esc».Вуаля!

Чтобы удалить комментарии, используйте блочную визуализацию, чтобы выбрать комментарии и просто удалить их, используя 'Икс'.

Используйте команду визуального блока v (или V для целых строк и С-В для прямоугольных блоков).В режиме визуального блока вы можете использовать любые команды движения, включая поиск;Я часто использую }, чтобы перейти к следующей пустой строке.Как только блок отмечен, вы можете сохранить его в файл, удалить, выдернуть или что-то еще.Если вы выполнили команду и визуальный блок исчез, повторно выберите тот же блок с помощью gv.Дополнительную информацию см. в разделе :help Visual-change.

Я думаю, что в комплекте с vim поставляются скрипты для конкретного языка, которые делают такие вещи, как комментирование блоков кода, в соответствии с выбранным вами языком.

Нажимать V (заглавная буква V), а затем нажмите 40j чтобы выбрать 40 строк, а затем нажмите d чтобы удалить их.Или, как ответил @zigdon, вы можете их прокомментировать.

Визуальный режим — решение вашей главной проблемы.Что касается комментирования участков кода, то на vim.org для этого есть множество плагинов, я сейчас использую tComment.vim.

Существует также удобный способ закомментировать блок без плагина.Допустим, вы работаете в Python, и # — это символ комментария.Сделайте визуальный выбор блока столбца, в котором вы хотите разместить знак решетки, и введите I#ESCAPE.Чтобы войти в режим визуальной блокировки, нажмите C-q в Windows или C-v в Linux.

Или вы можете попробовать этот сценарий...

http://www.vim.org/scripts/script.php?script_id=23

Моя техника блочного комментария:

Ctrl+В для запуска блочного визуального режима.

Сделайте свой выбор.

Пока выбор все еще активен, Сдвиг+я.Это переведет вас в режим вставки столбца.

Введите символы комментария «#» или «//» или что-то еще.

ЭСК.

Если вы хотите выполнить действие над диапазоном строк и знаете номера строк, вы можете указать диапазон в командной строке.Например, чтобы удалить строки с 20 по 200, вы можете сделать:

:20,200d

Чтобы переместить строки с 20 по 200 туда, где находится строка 300, вы можете использовать:

:20,200m300

И так далее.

Для комментирования строк я бы предложил один из этих плагинов:

РасширенныйКомментировать

Комментатор NERD

Сейчас я чаще использую NERD, но я использую EnhancedCommentify уже много лет.

Использовать Сдвиг+В перейти в визуальный режим, далее можно выделять строки и удалять/изменять их.

Мой обычный метод закомментирования 40 строк — поместить курсор на первую строку и ввести команду:

:.,+40с/^/# /

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

Первый ответ на данный момент не совсем верен?Чтобы прокомментировать выбор нажмите ':' и Type Command: '<,'> s/^/#/g

('<, '> - будет автоматически)

Вы должны знать о команде обычного режима [count]CTRL-Д.При необходимости он меняет параметр «прокрутка» с 10 на [count], а затем прокручивает указанное количество строк вниз.Прессование CTRL-Д снова снова прокрутит вниз те же строки.

Итак, попробуйте ввести

V     "visual line selection mode
30    "optionally set scroll value to 30
CTRL-D  "jump down a screen, repeated as necessary
y      " yank your selection

CTRL-U работает так же, но прокручивает вверх.

v переходит в режим визуального блока, в котором вы можете выбирать, как если бы это было с помощью Shift в большинстве распространенных редакторов, позже вы можете делать все, что обычно делаете с обычными командами (замена :'<,'>s/^/#/ для добавления комментария , например), где '<,'> означает выбранный визуальный блок, а не весь текст.

отметки были бы самыми простыми мб с чего вы хотите начать и мне где вы хотите закончить, как только это будет сделано, вы сможете делать практически все, что захотите

:'b,'ed

удаляет из маркера б отмечать е

закомментировать 40 строк можно в визуальном режиме

V40j:s/^/#/

закомментирует 40 строк с того места, где вы начинаете последовательность

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top