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.