Предположим, у меня есть следующие тексты:
aaa-dd-e: "aaa",
bb-x: "bb",
c-9: "c"
Я хочу сделать выбор, как показано ниже:
aaa-dd-e:
"ааа",
bb-x:
"бб",
c-9:
"с"
Я попытался использовать cv для создания визуального блока, но после того, как я создал выделение в первом столбце и нажал «f:» (я хотел расширить выделение до метки двоеточия на каждой строке, как описано выше), я получил следующее:
aaa-
дд-е: "ааа",:
bb-x
"бб",
c-9:
"с"
выбор останавливается на первом двоеточии и создает прямоугольник.
visual-mode
Аарон Шен
источник
источник
Ответы:
Выбор - это, как правило, средство для достижения цели, особенно в Vim, где выбор часто не требуется.
Предполагая, что вы все еще хотите поместить кавычки вокруг имен свойств в файле, не являющемся JSON, чтобы превратить его в правильный JSON:
:'<,'>norm I"^[f:i"
('<,'>
автоматически вставляется для вас и^[
получается с помощью<C-v><Esc>
).Если у вас есть красивый плагин объемного звучания, шаг 2 становится:
С заменой, шаг 2 может стать:
источник
:g/regex/norm
я могу просто достичь того, что хочу."+y
или"*y
, в зависимости от того, на какой буфер обмена вы хотите нацелиться. Здесь много связанных вопросов.Vim поддерживает только прямоугольные блочные выделения, за исключением зубчатой правой границы при нажатии
$
.Существуют плагины (например, несколько курсоров vim ), которые могут эмулировать несколько вариантов выбора, но вы также должны быть в состоянии достичь своей реальной цели (о которой вы, к сожалению, не упомянули), например, с помощью чисто команд Vim
:global
и:substitute
(если вы можете сформулировать обычные выражение, которое соответствует выделению в каждой строке), или путем повторения макросов (если есть конкретное движение, которое покрывает выделение в каждой строке).источник
Просто чтобы бросить еще одну шляпу в кольцо, если вы действительно хотите использовать визуальный отбор, вы можете использовать плагин Tabular, чтобы выстроить двоеточия, а затем сделать визуальный отбор.
Если вы берете свой оригинальный текст:
:Tab /:\zs
выровняйте все после двоеточия, как показано нижеИ тогда вы можете сделать свой визуальный выбор блока.
Однако, как говорили другие, в этой ситуации визуальный отбор, вероятно, не нужен. Использование
norm
или замена может, вероятно, выполнить то, что вы хотите, без суеты с визуальным выбором.источник
Я нашел решение этой проблемы, которое удивительно просто! Запустите режим визуального блока снизу выделения текста, который вы хотите скопировать, и выберите вверх! Он будет расширять блок по мере того, как вы поднимаетесь, тогда как если вы выделите его вниз, то, кажется, выделение будет меньше.
источник