Довольно просто для 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"