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


145

Як ви можете вставити, коли ви перебуваєте у режимі візуального блоку (натискаючи ctrl-V) у Vim?


4
можливо дублікат ВІМ покадрово Вставка
— Conner

1
Швидкий підсумок відповіді: Я просто викладу відповідь тут у простій формі. Є так багато коментарів, що ця нитка потопає. 1) Перевірте, чи увімкнено + visualextra у вашій версії Vim, ввівши: ver у Vim. 2) Ви вставляєте, позначаючи спочатку матеріал, який ви хочете відредагувати, а потім натискаєте I (з великої літери) - я не буду працювати. 3) Після цього ви зможете виглядати так, що ви вставляєте лише перший рядок, але коли ви закінчите, натисніть ESC та j, тоді текст буде скопійовано в інші рядки. Ось як це для мене.
— Зет

Відповіді:


203

Спробуйте це

Вибравши блок тексту, натисніть Shift+ iабо велику літеру I.

Малі регістри iне працюватимуть.

Потім введіть потрібні речі і, нарешті, застосуйте їх до всіх рядків, натисніть Escдвічі.




Якщо це не працює ...

Перевірте, чи +visualextraувімкнено ви у своїй версії Vim.

Це можна зробити, ввівши :verі прокручуючи список функцій. (Ви можете скопіювати і вставити його в буфер і здійснити поступовий пошук, оскільки формат незвичайний.)

Увімкнення цього питання не входить в рамки цього питання, але я впевнений, що його можна знайти десь.


13
Не забувайте Aтакож!
— jmdeldin

42
Вам також потрібно натиснути клавішу escape, щоб вийти з режиму вставки, перш ніж текст буде дублюватися.
— Брендон Джойс

19
Хто-небудь бачив, щоб це не працювало? У мене не змінене налаштування vim на CentOS. Я натискаю ctrl + v, натискаю ja кілька разів, і я бачу, що курсор виділяє перший символ декількох рядків. Я натискаю shift + i. Курсор переміщений до першого символу першого рядка, але я повернувся до нормального режиму. Я це знаю, тому що якщо натиснути "a", він переміщує символ праворуч, і він говорить "- ВСТАВИТЬ -". Якщо я введіть кілька символів і натисніть клавішу escape, це не застосовується до інших рядків.
— Тайлер Коллієр

2
@TylerCollier У мене виникає проблема з Ubuntu 14.04 на цифрово-цифровій. Будь ласка, прокоментуйте, якщо ви знайшли рішення.
— Зак Берт

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

41
  1. натисніть ctrl і v // start select
  2. натисніть shift і i // потім введіть будь-який текст
  3. натисніть esc esc // натисніть esc двічі

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

1
З усіх відповідей ця єдина, яка працювала на мене. Я перебуваю на комп'ютері, використовуючи встановлення варіння
— Даніель Каплан

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

Я не думаю, що вам потрібно натиснути esc двічі. Якщо після esc натиснути що-небудь, текст автоматично оновить текст. Якщо ні, то це зробиться приблизно за пів секунди.
— Шахбаз

29

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

Подобається це

Hello World
Hello World

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

Крім того, крутіший спосіб зробити це - лише візуальний блок вибрати "Світ" в обох рядках. Тип cдля change. Тепер ви в insertрежимі. Вставте потрібний матеріал і натисніть ESC. Обидва відображаються меншими натисканнями клавіш.

Hello Cool 
Hello Cool

останній крок корисний для мене, ви повинні натиснути, ESCтоді на всіх позначених рядках буде показаний знак, який ви вводите.
— Вебб, Лу,

чудові речі, це дуже допомагає
— prosti

9

якщо ви хочете додати новий текст до або після вибраного стовпчика:

  • натисніть ctrl + v
  • виберіть стовпці
  • shift shift + i
  • написати свій текст
  • натисніть еск
  • натисніть "jj"

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

jj- вбивця!
— Ань Тран
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.