Як заблокувати заміну коду у візуальному режимі?


26

У мене є список елементів, де я хочу замінити перші два символи:

a) item 1
b) item 2
c) item 3

Який найшвидший спосіб зробити це:

* item 1
* item 2
* item 3

У мене є підхід із візуальним режимом (Ctr-v, jjj, але потрібно виконати дві команди заміни. Iirc, цю заміну можна виконати за допомогою 1 команди)


1
Як .,.+2s/^../*/(або рівнозначно у візуальному підборі)? Чому дві команди замінюють? 2cзамінив би два символи.
муру

іноді змінюється лише перший рядок у візуальному виділенні, повторюючись потім з. для інших ліній псується речі.
poseid

2
@poseid Ви звикли натискати Ctrl-Cзамість Esc? Це, крім іншого, запобігає застосуванню змін до кожного рядка вибору блоку Visual.
tommcdo

це може бути основною причиною плутанини! Спасибі!
poseid

Відповіді:


26

Вибір візуального блоку:

<C-v>
jjl
c*
<Esc>

:normal:

:,+2norm! cE*

Заміна:

:,+2s/^.\{2}/*

Точкова формула:

cE*<Esc>
j.
j.

1
Божевільний підхід: використовуючи textobj-word-column.vim, що можна зробити ciC*<esc>і зробити. Примітка: цей плагін є плагіном "роби те, що я маю на увазі", тому він виходить з ладу в несподіваних місцях і способах, але плагін все-таки корисний у деяких легких випадках, як цей.
Пітер Рінкер

цікава нормальна та крапка формули!
poseid

3
Зауважте, що для рішення Visual-block ви побачите лише текст, який набирається в першому рядку. Як тільки ви натиснете <Esc>, він заповнить рядки, що залишилися.
tommcdo

Будь-які пропозиції щодо способу запам'ятати, що c замінить? Подобається, як ctrl + D (власні)
Джордан Макі

2
@JordanMackie cпризначений для "змін".
romainl

17

Ось більш ефективний спосіб зробити це:

  1. Навівши курсор на перший елемент та першу букву ( 0), введіть візуальний режим "блочно" Ctrl+ vта виберіть 1-й стовпець поточного абзацу за допомогою }(якщо ваш список закінчено новим рядком), інакше використовуйте різні методи, наприклад клавіші зі стрілками (для переміщення навколо вибору) або шукайте шаблон, /c)де cваш останній елемент).
  2. Перехід до останнього символу вашого списку з допомогою kі l(або з допомогою клавіш зі стрілками ), так що дві колонки обрані , які ви хочете змінити.
  3. Змініть вибраний текст, натиснувши cта введіть символ кулі ( *) та закінчіть натисканням Esc.

Працює ефективніше, особливо в більш тривалих списках.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.