ВИМ редактирование нескольких местах одновременно
в некоторых текстовых редакторах, таких как e, вы можете выбрать несколько местоположений, и по мере ввода все выбранные местоположения заменяются символами, которые вы вводите.
например, предположим, что у вас есть
<tag1 class=""></tag1>
<tag2><tag3 class=""></tag3></tag2>
в e вы можете просто выбрать два местоположения (внутри наборов котировок), затем начать печатать, и оба местоположения будут обновлены одновременно. В vim вы можете выбрать сразу несколько подключенных столбцов, а затем отредактировать их, но мне интересно, если существует любой способ выбрать несколько местоположений,которые не выстроены.
6 ответов
посмотреть SnippetsEmu. Он должен делать что-то очень похожее на то, что вам нужно.
Он эмулирует фрагменты TextMates. Вы должны иметь возможность повторять один фрагмент с одним и тем же тегом, и редактирование будет делать все правильно, обновляя один и тот же тег во всех местах по мере ввода.
вот как я бы, вероятно, отредактировал эти конкретные строки (есть много способов):
/""<enter>
aText to replace...<esc>
n
.
сначала найдите пустые кавычки, чтобы поместить курсор на первую. С помощью команды" a " (добавить) введите новый текст, чтобы поместить его в кавычки. Когда вы закончите, используйте "n "(next), чтобы перейти к следующему экземпляру и"."(повторите последнюю команду), чтобы снова вставить тот же текст. Повторите " n .- столько раз, сколько потребуется.
этот метод требует меньше предварительной подготовки и позволяет начать работу сразу, не определяя заранее все места, где вы можете добавить текст.
вы можете искать визуальный режим blockwise, который позволит вставлять, удалять и т. д. сразу на нескольких строках.
Blockwise режим позволит квадратные выборы со столбцом и линией начальной точки в одном углу, и текущей позиции курсора, определяющей столбец и линию другого угла. Это, в отличие от выбора на основе строки, который является значением по умолчанию.
сочетания клавиш ctrl-v будет место в blockwise визуальном режиме.
если у вас есть несколько такие строки:
INSERT INTO Users VALUES(1, 'Jim');
INSERT INTO Users VALUES(2, 'Jack');
INSERT INTO Users VALUES(3, 'Joseph');
и хотел вставить " 0 " после идентификатора для каждой строки, затем поместите курсор после запятой в первой строке:
INSERT INTO Users VALUES(1,* 'Jim');
со звездочкой, представляющей курсор, последовательность команд будет:
CTRL-v # Put into blockwise visual mode
j # Down a line
j # Down a line
CTRL-I # Captial I for insert
0, # the text to insert
Esc # escape
теперь текст должен выглядеть так:
INSERT INTO Users VALUES(1, 0, 'Jim');
INSERT INTO Users VALUES(2, 0, 'Jack');
INSERT INTO Users VALUES(3, 0, 'Joseph');
также блочный визуальный режим, x удалит выделение, y будет дергать его.
:справка CTRL-V даст дополнительную документацию.
Я также ищу что-то подобное, в частности, очень полезную функциональность из ST2, где вы нажимаете CTRL+D, чтобы выбрать следующее вхождение, а затем замените оба вхождения, просто введя его.
попробуйте этот плагин. Просто нажмите CTRL+N столько раз, сколько необходимо, чтобы выбрать несколько случаев