Какой смысл использовать режим виртуальной замены в Vim?

9

В справке говорится, что команды виртуального режима замены в Vim gr& GRзаменяют символы в состоянии экрана, а не в файле.

:help Virtual-Replace-mode

Я понимаю это как изменение символов на дисплее, но не в самом буфере. Это правильно? Это кажется неверным.

Я могу использовать объяснение и, возможно, сценарий или пример, где эта функция актуальна.

Шри Кадимисетты
источник

Ответы:

9

В режиме Virtual-Replace-Mode буфер более жестко фиксируется в исходной позиции.

1. Hello World
         ^ Cursor
2. I like cheese
3. And beer

При входе в нормальный режим замены и попадании Internet<CR>And othersв новый буфер будет выглядеть так:

1. Hello Internet
2. And others
3. I like cheese
4. And beer

При выполнении того же в Virtual-Replace результат будет

1. Hello Internet
2. And othersese
3. And beer

Другой пример (tabstop = 2; sts = 0):

1. 012345678901234567890
2. Hello beautiful World
         ^ Cursor

Нажатые клавиши: <Tab><Tab>

Результат Replace-Mode:

1. 012345678901234567890
2. Hello     autiful World

Результат Virtual-Replace-Mode:

1. 012345678901234567890
2. Hello     tiful World

Потому что в режиме замены замена выполняется символом на символ, где Tabодин символ, независимо от того, сколько символов отображается. В Virtual-Replace-Mode видимая длина Tab( :h 'ts', :h 'sts') используется для замены символов.

Крисси
источник
(Были ли какие-либо символы съедены форматированием комментариев, некоторые строки в кавычках выглядят так, как будто они пропускают текст, для меня). Во всяком случае, последний абзац очень помог. Я почти уверен, что понял сейчас :) Спасибо огромное @krissi!
Шри Кадимисетты