10

Возможно, я ищу неправильный путь, но мне не удалось выяснить, как это сделать.

Вот сценарий: у меня есть список в текстовом файле, где я хочу вставить одно и то же слово в несколько строк, вот пример текста:

12.1           Item1
12.2           Item2
12.3           Item3

Теперь я визуально-блок отмечаю 8-й столбец, отмеченный подчеркиванием ниже, и намереваюсь заменить часть пробела на Done не перемещая столбец элемента:

12.1   _       Item1
12.2   _       Item2
12.3   _       Item3

Я ожидал, что смогу перейти в режим замены, но я могу войти только в режим вставки (I), добавления (A) или изменения (c). Режим изменения близок к тому, что я хочу: если я знаю длину слова, блок может быть установлен на ту же ширину.

Есть что-то, чего я здесь не хватает?

2 ответа2

18

Почему бы вам не выбрать 4 столбца и нажать c?

<C-v>
2j
3l
cDone
<Esc>

Также вы можете использовать :h normal:

V
2j
:'<,'>norm 7lRDone
<Esc>
1

Если вы хотите заменить в визуальном блоке, вы можете использовать плагин vis.vim.

http://vim.wikia.com/wiki/Applying_substitutes_to_a_visual_block

Установить:

Загрузите файл vis.vba.gz с http://www.drchip.org/astronaut/vim/index.html#VIS.

# Open vis.vba.gz in Vim 7.1 or later.
vim vis.vba.gz

# Source the open file.
:so %

# Quit Vim
:q

После установки:

ctrl-v to enter visual-block mode
Move to select the block you want
:B s/pattern/newtext/

Более того, вы можете выполнять любую команду Ex для визуального блока, а не только для замены. Например :B !sort

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