Выделить блок символов в команде VI / M ex - PullRequest
2 голосов
/ 16 января 2012

Довольно просто для VI / M отметить блок строк от M-й строки до N-й строки, готовой к удалению, вырезанию и вставке, копированию и вставке.

:M,N d
:M,N m p
:M,N t p 

Если для VI / M дополнительно требуется пометить блок символов от I-го символа M-й строки до J-го символа N-й строки, возможно ли выполнить аналогично описанному выше?

@ EDIT

За исключением следующего ответа на вопрос visual block mode, как насчет варианта ввода команды succinct ex?

@ РЕДАКТ. 2

Для уточнения значения блок символов :

  • a квадратный блок символов с адресом visual block mode, вызываемый напрямую нажатием Ctrl - v в normal mode
  • a область zipzag последовательных символов с адресом visual character mode, вызываемая напрямую нажатием v в normal mode
  • a ряд строк последовательных строк, адресуемых с помощью visual line mode, непосредственно вызываемых нажатием V в normal mode. В этом случае удобное решение в ex mode было проиллюстрировано выше, когда эта тема была первоначально затронута.

@ РЕШЕНИЕ

Выбор abitrary область zipzag последовательных символов от строки M, столбца I до строки N, столбца J в ex mode точно так же, как в visual character mode:

марка:

:normal! MggI|vNggJ|

удаление:

:normal! MggI|vNggJ|d

дергать:

:normal! MggI|vNggJ|y

перейти к строке X столбца Y

:normal! MggI|vNggJ|dXggY|p

скопировать в строку X столбец Y

:normal! MggI|vNggJ|yXggY|p

@ РЕШЕНИЕ 2

Выбор произвольного квадратного блока символов из строки M, столбца I в строку N, столбца J в ex mode точно так же, как в visual block mode:

марка:

:execute "normal! MggI|\<C-v>NggJ|"

удалить

:execute "normal! MggI|\<C-v>NggJ|d"

дергать:

:execute "normal! MggI|\<C-v>NggJ|y"

перейти к строке X столбца Y

:execute "normal! MggI|\<C-v>NggJ|dXggY|p"

скопировать в строку X столбец Y

:execute "normal! MggI|\<C-v>NggJ|yXggY|p"

Ответы [ 2 ]

4 голосов
/ 16 января 2012

Вы можете использовать режим визуального блока из командного режима ex, используя normal!: например, чтобы выбрать блок (строку, столбец) от (42, 10) до (54, 20) и восстановить его (обе строки должны должно содержать не менее 20 символов или virtualedit=block):

execute "normal! 42gg10|\<C-v>54gg20|y"

. Это очень простой способ сделать это, полезный только в сценариях.

Обратите внимание, что эта команда имеет как минимум следующие побочные эффекты:

  1. Установочные отметки '<, '>, '[, '], ''.
  2. Перемещение курсора.
  3. Смена регистров @", @0.
  4. Добавление одного элемента в список переходов.
  5. Перезаписывает предыдущий визуальный выбор.
  6. Изменение v:count и v:count1 переменных.
2 голосов
/ 16 января 2012

Ctrl + V включает режим визуального блока, затем вы можете использовать клавиши со стрелками для выбора блока.

...