Vim: швидший спосіб вибору блоків тексту у візуальному режимі


190

Я використовую Vim в протягом досить довгого часу , і знаю , що при виборі блоків тексту в візуальному режимі так просто , як SHIFT+ Vі переміщення клавіші зі стрілкою вгору або вниз лінію за лінією , поки не дійдете до кінця блоку тексту , який я хочу обрати

Моє запитання - чи існує більш швидкий спосіб у візуальному режимі вибрати блок тексту, наприклад SHIFT+, Vпісля чого вказати номер рядка, на якому я хочу зупинити вибір? ( :35наприклад, де 35 - номер рядка, до якого я хочу вибрати - це, очевидно, не працює, тому моє питання полягає в тому, щоб знайти, як зробити щось подібне до цього ...)


3
+1 Добре запитання, оскільки я часто виявляв щось подібне. Мені цікаво , якщо можливо , це не місце , почати роботу з використанням v%або v/patternабо що - то ще?
користувач786653

9
vip select внутрішній абзац щодо вибору внутрішнього речення.
SergioAraujo

27
V35Gбуде візуально вибирати з поточного рядка до рядка 35, також V10jабо V10kвізуально вибирає наступний чи попередній 10 рядків
Стефан

1
@Stephan, саме це я шукав. Дякую!!
крик

для лінії вибору використання I ярлик: nnoremap <Space> V. У режимі візуального рядка просто клацніть правою кнопкою миші мишкою, щоб визначити вибір (принаймні, в Linux це так). У будь-якому випадку, ефективніше, ніж лише для клавіатури.
Михайло V

Відповіді:


212

Окрім сказаного іншими, ви також можете розширити свій вибір, використовуючи пошук шаблонів.

Наприклад, v/foo виберемо з вашого поточного положення до наступного примірника "foo". Наприклад, якщо ви насправді хотіли розширитись до наступного екземпляра "foo", у рядку 35, просто натисніть, nщоб розширити виділення до наступного примірника тощо.

оновлення

Я не часто це роблю, але знаю, що деякі люди широко використовують знаки для візуального вибору. Наприклад, якщо я перебуваю на лінії 5 і хочу вибрати для лінії 35, я можу натиснути, maщоб розмістити позначку aна лінії 5, потім :35перейти до лінії 35. Shift+ vщоб увійти в візуальний режим по лінії , і, нарешті, `aповернутися для позначки a.


21
Якщо вам потрібно включити шаблон, який ви можете використовувати v/foo/e. eЧи означає «кінець» варіант оформлення.
Пітер Рінкер

6
І ви можете змінювати з цього рядка за допомогою зміщення: V / foo / + 5 або V / foo / -5 (я використовую лінійний візуальний режим, як автор).
bheeshmar

Що б ви зробили, якби хотіли вибрати діапазон тексту, що відповідає вашому пошуку; тобто: знайти та вибрати (цілим словом) свій пошуковий термін?
Даніель Парк

5
@DanielPark Щоб вибрати поточне слово, використовуйте v i w. Якщо ви хочете вибрати поточний суміжний непробільний простір, використовуйте v i Shift+ w. Різниця полягала б у тому, що тут є каре MyCla|ss.Method, перший комбо вибрав би, MyClassа другий вибрав би всю справу.
Джей

1
Дякую. Виявлено, що також використання v i w sдозволяє ефективно виконати операцію "заміни".
Даніель Парк

113
G                       Goto line [count], default last line, on the first
                        non-blank character linewise.  If 'startofline' not
                        set, keep the same column.
                        G is a one of jump-motions.

V35G досягає того, що ви хочете


89

Vim - мова. Щоб справді зрозуміти Вім, ти повинен знати мову. Багато команд є дієсловами, а vim також має предмети та прийменники.

V100G
V100gg

Це означає "вибрати поточний рядок до та включити рядок 100."

Текстові об’єкти - це місце, де велика сила. Вони вводять більше об’єктів із прийменниками.

Vap

Це означає "вибрати навколо поточного абзацу", тобто вибрати поточний абзац і порожній рядок, що слідує за ним.

V2ap

Це означає "вибрати навколо поточного абзацу та наступного абзацу".

}V-2ap

Це означає "перейти до кінця поточного абзацу, а потім візуально вибрати його та попередній абзац".

Розуміння Vim як мови допоможе вам отримати найкращий пробіг із нього.

Після вибору вниз ви можете комбінувати з іншими командами:

Vapd

За допомогою вищевказаної команди ви можете вибрати навколо абзацу та видалити його. Змініть dна a, yщоб скопіювати, або a, cщоб змінити або ap щоб вставити.

Як тільки ви зрозумієте, як усі ці команди працюють разом, вам з часом візуально нічого не потрібно буде вибирати. Замість візуального вибору та видалення абзацу ви можете просто видалити абзац за допомогою dapкоманди.


} V-2ap Використання -2 - це справді розумно.
Амбарееш

40

v35G вибере все від курсору до рядка 35.

vпереводить вас у режим вибору, 35вказує номер рядка, який ви хочете зробитиG перейти.

Ви також можете скористатися, v}який виділить все до початку наступного абзацу.



9

Shift+V n j або Shift+V n k

Це вибирає поточний рядок та наступний / попередній nрядки. Я вважаю це дуже корисним.


Це простий спосіб, який я шукав. Спасибі
Арсал


6

v%

вибере весь блок.

Грайте також:

v}, vp, vsІ т.д.

Довідка:

:help text-objects

де перераховано різні способи вибору букв, слів, речень, абзаців, блоків тощо.



4

Ви можете натиснути, vi}щоб вибрати блок, оточений {}дужками, де зараз знаходиться ваш курсор.

Насправді не важливо, де ви знаходитесь у цьому блоці (просто переконайтеся, що ви знаходитесь у самій зовнішній). Також ви можете змінити {все, що має пару, як )або ].


3

Ви завжди можете просто використовувати попередні числа для повторення дій:

  • У візуальному режимі введіть 35 курсор і перемістіться вниз 35 разів, вибравши наступні 35 рядків
  • У звичайному режимі:
    • видалити 35 рядків 35dd
    • вставити 35 разів 35p
    • скасувати 35 змін 35u
    • тощо.

3

просто натиснути Shift v line number gg

приклад: ваш поточний рядок до рядка 41 Просто натисніть Shift v 41 gg


1

} означає переміщення курсору до наступного абзацу. тож використовуйте v}для вибору цілого абзацу.


0

Для вибору всіх у візуальному: Введіть Esc, щоб переконатися, що ви перебуваєте у звичайному режимі

:0 

введіть ENTER, щоб перейти до початку файлу

vG

Ви можете використовувати ggв звичайному режимі і для переходу до першого рядка.
huangzonghao

0

Це може стати в нагоді знати:

Для того, щоб вибрати однакову кількість рядків, наприклад, використовувати, 1v Ви повинні зробити деякі зміни, щоб мати можливість використовувати 1v, блочно або лінійно.

Сьогодні я побачив цю дивовижну пораду звідси :

 :5mark < | 10mark > | normal gvV
 :5mark < | 10mark > | normal gv

Ви також можете скинути межі візуального блоку таким чином:

m< .......... sets the visual mode start point
m> .......... sets the visual mode end point

0

Я використовую це зі складанням в режимі відступу:

v відкрити візуальний режим в будь-якому місці блоку

zaza занадто двічі його

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