Як видалити вибраний текст у редакторі vi


116

Я використовую PuTTY та редактор vi. Якщо я вибрав п'ять рядків за допомогою миші і хочу видалити ці рядки, як це зробити?

Крім того, як я можу виділити лінії, використовуючи клавіатуру, як це можливо в Windows, де натискаю Shiftі переміщую стрілки для вибору тексту? Як я можу це зробити в vi?


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

x Видалити символ праворуч від курсору X Видалити символ ліворуч від курсору D Видалити до кінця рядка dd Видалити поточний рядок: d Видалити поточний рядок із lagmonster.org/docs/vi.html сподіваюсь, що трохи допоможе
— Mawg повідомляє відновити Моніку

1
Питання VIM щодо суперпользователя? ЛОЛ!
— Паскаль Thivent

1
@Pascal: хм, так, ти маєш рацію. До речі, добре відформатована відповідь. О, і його / її питання стосувалося не VIM, а VI. ;)
— Марсель Корпель

Відповіді:


215

Я використовую PuTTY та редактор vi. Якщо я вибрав п'ять рядків за допомогою миші і хочу видалити ці рядки, як це зробити?

Забудьте про мишку. Щоб видалити 5 рядків:

  • Перейдіть до першого рядка і введіть d5d( ddвидаляє один рядок, d5dвидаляє 5 рядків) ~ або ~
  • Введіть Shift-vдля входу в режим вибору порядкової , потім проведіть курсор вниз , використовуючи j(так, використання h, j, kі lдля переміщення вліво , вниз , вгору , вправо , відповідно, що набагато ефективніше , ніж з допомогою стрілок) і введіть dвидалити виділення.

Крім того, як я можу виділити лінії, використовуючи клавіатуру, як це можливо в Windows, де натискаю Shiftі переміщую стрілки для вибору тексту? Як я можу це зробити в vi?

Як я вже сказав, або використовуйте Shift-vдля входу в режим рядкового вибору, або vдля переходу в режим вибору символів, або Ctrl-vдля переходу в режим блочного вибору. Потім рухатися h, j, kі l.

Я пропоную провести деякий час з Vim Tutor (запустити vimtutor), щоб ознайомитися з Vim дуже дидактично.

Дивитися також


1
Насправді vim має чудову підтримку миші, якщо ваш термінал підтримує його. Наприклад, використовуючи gpmдемон в консолі, або працює xtermабо konsoleв графічному середовищі, ви можете сказати vim set mouse=a(або додати його у свій .vimrc), а миша може бути використана для вибору, зміни розміру розколів тощо.
— Ben Voigt,

@Ben Ви маєте рацію, я зовсім не використовую мишу, але це не означає, що VIM не може з цим боротися (за певних обставин). Я фактично видаляв цю неточну частину своєї відповіді, коли ви друкували.
— Паскаль Thivent

Крім того, важко сказати, коли ваш V капітал чи ні ... Я б запропонував сказати [Shift] + [V] для вибору лінійного режиму.
— Бен Войгт

Я знаю , що це було деякий час, але чому використання h, j, kі lбуде набагато більш ефективним , ніж з допомогою стрілок? Я не бачу проблем із використанням стрілок і кінцевий результат виглядає так само. Також стріли спочатку були розроблені для цієї мети, тому їх розташування відчувається набагато інтуїтивніше (принаймні для мене)
— Фредеріко Пантуцца

1
@FredericoPantuzza У цьому пункті справа руху руки - мета - постійно тримати пальці по клавішах домашнього ряду. Необхідність підняти праву руку і перетягнути її до клавіш зі стрілками, щоб користуватися ними, збільшується з часом.
— AndrewF

59

Зробіть це ві способом.

Щоб видалити 5 рядків, натисніть: 5dd(5 видалити)

Для вибору (фактично скопіюйте їх у буфер обміну) введіть: 10yy

Це трохи важко зрозуміти, але дуже зручно вчитися під час використання цих віддалених терміналів

Будьте в курсі кривих навчання для деяких редакторів:


(джерело: телята на unix.rulez.org )


31

Якщо ви хочете видалити за допомогою номерів рядків, ви можете використовувати:

:startingline, last line d

Приклад:

:7,20 d

У цьому прикладі буде видалено рядок 7-20.


Я досі не знав про цю пораду. Це працює як шарм! Дякую!
— Тунг

13

Виділення за допомогою миші виділяє лише символи на терміналі. VI насправді не отримує цю інформацію, тому вам потрібно виділити інакше.

Натисніть "v", щоб увійти в режим вибору, і скористайтеся клавішами зі стрілками для переміщення. Щоб видалити, натисніть x. Щоб вибрати рядки одночасно, натисніть shift + v. Щоб вибрати блоки, спробуйте ctrl + v. Це добре, скажімо, для вставки безлічі рядків коментарів перед кодом :).

Я в порядку з VI, але мені знадобилося деякий час, щоб покращитись. Мої товариші по роботі рекомендували мені цю шпаргалку . Я тримаю роздруківку на стіні для тих дивних моментів, коли щось забуду.

Щасливий злом!


6

При використанні такого терміналу, як PuTTY , зазвичай клацання миші та виділення миші не передаються віддаленій системі. Отже, vi не має уявлення, що ви просто вибрали якийсь текст. (З цього є винятки, але загалом дії миші не передаються.)

Щоб видалити кілька рядків in vi, використовуйте щось на зразок 5ddвидалення 5 рядків.

Якщо ви не використовуєте Vim , я настійно рекомендую зробити це. Ви можете використовувати візуальний вибір, де натискаєте, Vщоб запустити візуальний блок, перемістити курсор на інший кінець та натиснути dдля видалення (або будь-яку іншу команду редагування, наприклад, yдля копіювання).


1
@Justin L .: Використання <kbd>a</kbd>.
— Грег Хьюгілл

1
Дякую! : D Чи є ще якісь сховані десь там?
— Джастін Л.

1
Putty здатний передавати команди миші; перше речення може бути застарілим.
— congusbongus

3

Якщо ви хочете видалити всі рядки у файлі з вашого поточного номера рядка, використовуйте dG, він видалить усі рядки (shift g)середнього кінця файлу

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