Vim: Как вставить в режиме визуального блока?


154

Как вы можете вставить, когда находитесь в режиме визуального блока (нажав ctrl-V) в Vim?


4
возможный дубликат VIM Blockwise Insert
— Коннер

1
БЫСТРЫЙ ИТОГ ОТВЕТА: Я просто изложу здесь ответ в простой форме. Комментариев так много, что эта ветка тонет. 1) Убедитесь, что в вашей версии Vim включен + visualextra, набрав: ver в Vim. 2) Вы вставляете, сначала отмечая материал, который хотите отредактировать, а затем нажимаете I (заглавная i) - строчные буквы я не буду работать. 3) Как только вы это сделаете, это может выглядеть так, как будто вы вставляете только первую строку, но когда вы закончите, нажмите ESC и j, затем текст будет скопирован в другие строки. Вот как это происходит у меня.
— Зет

Ответы:


211

Попробуй это

После выбора блока текста нажмите Shift+ iили заглавную I.

Строчные буквы iне работают.

Затем введите то, что вы хотите, и, наконец, чтобы применить это ко всем строкам, Escдважды нажмите .




Если это не сработает ...

Проверьте, +visualextraвключили ли вы в своей версии Vim.

Вы можете сделать это, набрав :verи прокручивая список функций. (Вы можете скопировать и вставить его в буфер и выполнить инкрементный поиск, потому что формат нечетный.)

Включение этого параметра выходит за рамки этого вопроса, но я уверен, что вы можете где-нибудь его найти.


14
Не забывай Aтоже!
— jmdeldin

43
Вы также должны нажать escape, чтобы выйти из режима вставки, прежде чем текст будет дублирован.
— Brandon Joyce

20
Кто-нибудь видел, чтобы это не работало? У меня есть немодифицированная установка vim на CentOS. Я нажимаю ctrl + v, нажимаю несколько раз j и вижу, как курсор выделяет первый символ из нескольких строк. Нажимаю shift + i. Курсор перемещается к первому символу первой строки, но я вернулся в обычный режим. Я знаю это, потому что если я нажму «a», символ сдвинется вправо и будет написано «- INSERT -». Если я ввожу несколько символов и нажимаю escape, это не применяется к другим строкам.
— Тайлер Кольер

2
@TylerCollier У меня проблема с Ubuntu 14.04 в digitalocean. Прокомментируйте, если вы нашли решение.
— Зак Берт,

2
@ZacharyBurt По умолчанию vim, установленный с Ubuntu 14.04 (установленный как vi), не включает эту visualextraфункцию, поэтому вставка блока там не работает. sudo apt-get install vimвводит более полнофункциональную версию, на которой visualextraактивируется. @TylerCollier Это может быть та же проблема при установке CentOS: проверьте вывод, vim --versionчтобы увидеть полный список активированных функций.
— Габриэль Грант

43
  1. нажмите ctrl и v // начните выбор
  2. нажмите shift и i // затем введите любой текст
  3. нажмите esc esc // нажмите esc дважды

После нажатия ctrl + vвы можете нажать, jчтобы быстро выбрать строку (строки) ниже текущей позиции, или нажать, kчтобы быстро выбрать строку (строки) выше текущей позиции. Вы также можете использовать shiftклавишу с ошибками upили downдля выбора.
— tyler.frankenstein

1
Из всех ответов это единственный, который у меня сработал. Я на Mac использую установку brew
— Дэниел Каплан

Я жаловался в течение многих лет , что я не мог легко я nsert (например , гр висящий) в блоке выбора. Так что это с большой буквы i, я поражен. Я использовал :normal iINPUT<CR>для ввода в начале строк. Большое спасибо за это!
— Тим Виси

Я не думаю, что вам нужно дважды нажимать esc. Если вы нажмете что-нибудь после esc, он автоматически обновит текст. Если нет, он сделает это примерно за полсекунды.
— Шахбаз

29

У вас также может быть вариант использования, когда вы хотите удалить блок текста и заменить его.

Как это

Hello World
Hello World

Вы можете выбрать визуальный блок перед "W" и нажать Shift+ i- Тип "Cool" - Hit, ESCа затем удалить "World" путем выбора визуального блока.

В качестве альтернативы, более крутой способ сделать это - просто визуальным блоком выбрать «Мир» в обеих строках. Введите cдля change. Теперь вы в insertрежиме. Вставьте то, что хотите, и нажмите ESC. Оба отражаются с меньшими нажатиями клавиш.

Hello Cool 
Hello Cool

последний шаг полезен для меня, вы должны нажать, ESCтогда во всей отмеченной строке будет отображаться символ, который вы вводите.
— Уэбб Лу

отличный материал, это очень помогает
— прости

9

если вы хотите добавить новый текст до или после выбранного столбца:

  • нажмите ctrl + v
  • выберите столбцы
  • нажмите shift + i
  • напишите свой текст
  • нажмите esc
  • нажмите "jj"

2
Танцуй, jjраспространение изменений на все строки ниже было последним, что мне не хватало!
— kilogic

jjэто убийца!
— Anh Tran
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.