Как лучше всего выбирать, удалять или комментировать большие части многоэкранного текста в Vim? - PullRequest
24 голосов
/ 12 сентября 2008

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

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

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

Ответы [ 16 ]

23 голосов
/ 12 сентября 2008

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

Вы также можете использовать Визуальный выбор - v , по умолчанию. После выбора вы можете yank, cut и т. Д.

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

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

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

19 голосов
/ 12 сентября 2008

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

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

ma

в любом месте этой строки. Нет необходимости в толстой кишке.

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

:'a,.d

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

Команда, которую вы ввели после перемещения в конец текстового блока, говорит «от строки, содержащей символ, описанный маркером a ( ' a ), до текущей строка (. ) d elete. "

Такие вещи можно использовать и для других вещей.

:'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++)

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

17 голосов
/ 12 сентября 2008

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

Чтобы удалить комментарии, используйте blockwise-visual, чтобы выбрать комментарии и просто удалите их, используя ' x '.

8 голосов
/ 12 сентября 2008

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

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

4 голосов
/ 12 сентября 2008

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

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

4 голосов
/ 12 сентября 2008

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

3 голосов
/ 12 сентября 2008

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

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

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

При активном выделении Shift + I . Это переведет вас в режим вставки столбцов.

Введите комментирующие символы '#' или '//' или что-то еще.

ESC.

3 голосов
/ 12 сентября 2008

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

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

2 голосов
/ 20 февраля 2009

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

EnhancedCommentify

NERD Commenter

В наши дни я использую NERD чаще, но уже несколько лет использую EnhancedCommentify.

2 голосов
/ 18 февраля 2009

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

:20,200d

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

:20,200m300

и т. Д.

...