Как в Vim лучше всего выделить, удалить или закомментировать большие части многоэкранного текста?
Вопрос
Выбрать большой объем текста, который занимает множество экранов в 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.
Или вы можете попробовать этот сценарий...
Моя техника блочного комментария:
Ctrl+В для запуска блочного визуального режима.
Сделайте свой выбор.
Пока выбор все еще активен, Сдвиг+я.Это переведет вас в режим вставки столбца.
Введите символы комментария «#» или «//» или что-то еще.
ЭСК.
Если вы хотите выполнить действие над диапазоном строк и знаете номера строк, вы можете указать диапазон в командной строке.Например, чтобы удалить строки с 20 по 200, вы можете сделать:
:20,200d
Чтобы переместить строки с 20 по 200 туда, где находится строка 300, вы можете использовать:
:20,200m300
И так далее.
Для комментирования строк я бы предложил один из этих плагинов:
Сейчас я чаще использую 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 строк с того места, где вы начинаете последовательность