Як видалити вибраний текст у редакторі 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.