6

Учитывая, что у нас есть текущие данные:

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 ответа4

1

С курсором на N NAME я бы просто сделал следующее без особой заботы о гольфе:

<C-v>}hhhhhhhh

Но плагин textobj-column делает именно то, что вы хотите. Волшебно.

0

Вот один из способов сделать это:

  1. Сначала используйте control-v для входа в режим визуального блока
  2. Затем введите 2j чтобы перейти на две строки вниз к записи Peterson
  3. Используйте строчные буквы e чтобы переместить выделение блока в конец слова Peterson
  4. 4j чтобы переместить выделение вниз в последние четыре строки

Изменить: Если вы действительно настаиваете на том, чтобы избежать "магических чисел", вы можете сделать что-то, как описано здесь: https://stackoverflow.com/questions/3736678/how-do-you-select-a-whole-column-in-visual- блок-режим

  1. :set nosol (чтобы команда G не возвращалась к первой строке при выборе визуального блока)
  2. control-v
  3. /P (вы сказали, что нет магических чисел, но не запретили поиск букв - если пробел не имеет решающего значения, вы можете проигнорировать это)
  4. e (перейти к концу слова)
  5. G (переместить выделение блока вниз)

Другие советы:

  • если вам нужно повторно выбрать тот же блок позже, вы можете набрать gv
  • v используется для посимвольного визуального режима и V для построчного, в то время как control-v как указано выше, для блочного визуального режима

Полезные ссылки (кроме интернета):

  • Книга Practical Vim Дрю Нейла действительно хорошо написана
0

Существуют сценарии, облегчающие эту задачу, но при условии, что вы хотите использовать raw vim, вот мой самый известный способ сделать это:

а. Убедитесь, что ваша последняя строка файла заполнена пробелами, что-то вроде этого:

"______________________________________" .

затем перейдите к первой букве N в "Имя". Нажмите ctrl-v, w, 999999j и колонка будет выбрана.

Последняя строка должна быть заполнена пробелами, если ваш файл заканчивается новой строкой, поскольку в визуальном режиме нельзя выбрать части файла, которые не были созданы. если последняя строка является жизнеспособным контентом, вам это не нужно. ctrl-v+w выделяет слово, затем 999999j просто берет курсор "вниз" 99999 строк (или меньше, если файл меньше).

Примечание. Вы увидите, что это выделение всего столбца, и пробелы немного отличаются от того, что вы указали (но вы сказали, что это неважно). Насколько мне известно, если вы хотите, чтобы столбец был выровнен по концу самого большого слова, а не по началу следующего, вам нужно будет вручную найти самый большой размер слова, выбрать визуальную длину и затем выполнить что-то вроде 99999j .

0

То же, что и ответ игончо, но без "магических чисел"

Ctrl-V, W, G

G идет прямо к последней строке файла, не разбивая '9' несколько раз

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .