Режим Vim Visual: выберите текущий блок под курсором
Учитывая, что у нас есть текущие данные:
ID NAME AGE
1 Joan 29
2 Peterson 16
3 Hunt 47
4 Wenche 12
5 Kennedy 29
6 Lottie 31
И курсор на N в NAMEкак мне выбрать текст, чтобы, если | это разделители визуального блока, выделение должно быть таким
ID |NAME | AGE
1 |Joan | 29
2 |Peterson| 16
3 |Hunt | 47
4 |Wenche | 12
5 |Kennedy | 29
6 |Lottie | 31
Конечный пробел после каждого элемента соответствует ширине Peterson не обязательно, но мне нужен быстрый способ выделить текущий блок, если он существует.
4 ответа
С курсором на N из NAMEЯ бы просто сделал следующее без особой заботы о гольфе:
<C-v>}hhhhhhhh
Но плагин textobj-column делает именно то, что вы хотите. Волшебно.
То же, что и ответ игончо, но без "магических чисел"
Ctrl-V, W, G
G идет прямо к последней строке файла без необходимости разбивать '9' несколько раз
Существуют сценарии, облегчающие эту задачу, но при условии, что вы хотите использовать raw vim, вот мой самый известный способ сделать это:
а. Убедитесь, что ваша последняя строка файла заполнена пробелами, что-то вроде этого:
"______________________________________",
затем перейдите к первой букве N в "Имя". Удар ctrl-v, w, 999999j и столбец будет выбран.
Последняя строка должна быть заполнена пробелами, если ваш файл заканчивается новой строкой, поскольку в визуальном режиме нельзя выбрать части файла, которые не были созданы. если последняя строка является жизнеспособным контентом, вам это не нужно. ctrl-v+w выбирает слово, затем 999999j simple берет курсор "вниз" на 99999 строк (или меньше, если файл меньше).
Примечание. Вы увидите, что это выделение всего столбца, и пробелы немного отличаются от того, что вы указали (но вы сказали, что это неважно). Насколько мне известно, если вы хотите, чтобы столбец был выровнен по концу самого большого слова, а не по началу следующего, вам нужно будет вручную найти самый большой размер слова, выбрать визуальную длину и затем выполнить что-то вроде 99999j,
Вот один из способов сделать это:
- Первое использование
control-vвойти в режим визуального блока - Затем введите
2jспуститься на два ряда кPetersonзапись - Используйте нижний регистр
eпереместить выделение блока в конец словаPeterson - Тип
4jпереместить выделение вниз на последние четыре строки
Изменить: Если вы действительно настаиваете на том, чтобы избегать "магических чисел", вы можете сделать что-то, как описано здесь: https://stackoverflow.com/questions/3736678/how-do-you-select-a-whole-column-in-visual-block-mode
:set nosol(чтобыGкоманда не будет возвращаться к первой строке при выборе визуального блока)control-v/P(вы сказали, что нет магических чисел, но не запретили поиск букв - если пробел не имеет решающего значения, вы можете проигнорировать это)e(перейти к концу слова)G(переместить выделение блока вниз)
Другие советы:
- если вам нужно повторно выбрать тот же блок позже, вы можете набрать
gv vиспользуется для посимвольного визуального режима иVдля линии, в то время какcontrol-vкак указано выше для блочного визуального режима
Полезные ссылки (кроме интернета):
- Книга
Practical VimДрю Нил действительно хорошо написано