Как удалить выделенный текст в редакторе vi

116

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

Кроме того, как я могу выбрать строки с помощью клавиатуры, как я могу в Windows, где я нажимаю Shiftи перемещаю стрелки, чтобы выбрать текст? Как я могу сделать это в vi?

Питер Мортенсен
источник
1
у меня есть распечатанный список мужчин, но я не могу найти, как удалить выделенный текст
x Удалить символ справа от курсора X Удалить символ слева от курсора D Удалить до конца строки dd Удалить текущую строку: d Удалить текущую строку из lagmonster.org/docs/vi.html надеюсь, что это немного поможет
Mawg говорит восстановить Монику на работе
1
Вопросы по VIM по суперпользователю? РЖУНИМАГУ!
Паскаль Тивент
1
@Pascal: хм, да, ты прав. Кстати, красиво оформленный ответ. Да, и его / ее вопрос был не о VIM, а о VI. ;)
Marcel Korpel

Ответы:

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 (run vimtutor), чтобы поближе познакомиться с Vim очень дидактическим способом.

Смотрите также

Паскаль Тивент
источник
1
На самом деле vim имеет отличную поддержку мыши, если ваш терминал ее поддерживает. Например, используя gpmдемон в консоли, при запуске xtermили konsoleв графической среде, вы можете указать vim set mouse=a(или добавить его в свой .vimrc), а мышь можно использовать для выбора, изменения размеров разделений и т. Д.
Бен Фойгт,
@Ben Вы правы, я вообще не использую мышь, но это не значит, что VIM не может с этим справиться (в определенных обстоятельствах). Я фактически удалил эту неточную часть из своего ответа, пока вы печатали.
Pascal Thivent
Кроме того, действительно сложно сказать, когда у вас буква V заглавная или нет ... Я бы посоветовал сказать [Shift] + [V] для выбора линейного режима.
Ben Voigt
Я знаю , что это было некоторое время, но почему использование h, j, kи lбудет гораздо более эффективным , чем с помощью стрелок? Я не вижу проблем с использованием стрелок, и конечный результат выглядит таким же. Кроме того, стрелки были впервые разработаны для этой цели, поэтому их расположение кажется более интуитивным (по крайней мере, для меня)
Фредерико Пантуцца
1
@FredericoPantuzza В этот момент все зависит от движения руки - цель состоит в том, чтобы все время держать пальцы на клавишах домашнего ряда. Необходимость поднять правую руку и провести ее к клавишам со стрелками, чтобы использовать их, со временем складывается.
AndrewF
59

Сделайте это способом vi.

Чтобы удалить 5 строк, нажмите: 5dd(5 удалить)

Чтобы выбрать (фактически скопировать их в буфер обмена), вы вводите: 10yy

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

Обратите внимание на кривые обучения для некоторых редакторов:


(источник: calver на unix.rulez.org )

OscarRyz
источник
31

Если вы хотите удалить, используя номера строк, вы можете использовать:

:startingline, last line d

Пример:

:7,20 d

В этом примере будут удалены строки с 7 по 20.

Владимир верлег
источник
Я пока не слышал об этой подсказке. Работает как часы! Спасибо!
Тунг,
13

Выделение с помощью мыши выделяет только символы на терминале. VI на самом деле не получает эту информацию, поэтому вам нужно выделить другое.

Нажмите 'v', чтобы войти в режим выбора, и используйте клавиши со стрелками, чтобы перемещать его. Чтобы удалить, нажмите x. Чтобы выделить строки за раз, нажмите shift + v. Чтобы выбрать блоки, попробуйте ctrl + v. Это хорошо, например, для вставки большого количества строк комментариев перед кодом :).

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

Удачного взлома!

heymatthew
источник
6

При использовании такого терминала, как PuTTY , обычно щелчки мышью и выбор не передаются в удаленную систему. Итак, vi не знает, что вы только что выбрали какой-то текст. (Есть исключения, но, как правило, действия мыши не передаются.)

Чтобы удалить несколько строк в vi, используйте что-то вроде 5ddудаления 5 строк.

Если вы не используете Vim , я настоятельно рекомендую это сделать. Вы можете использовать визуальное выделение, когда вы нажимаете, Vчтобы начать визуальный блок, переместите курсор на другой конец и нажмите, dчтобы удалить (или любую другую команду редактирования, например, yчтобы скопировать).

Грег Хьюгилл
источник
1
@ Джастин Л .: Использование <kbd>a</kbd>.
Greg Hewgill
1
Спасибо! : D Есть ли еще где-нибудь такие спрятанные?
Джастин Л.
1
Putty может передавать команды мыши; первое предложение может быть устаревшим.
congusbongus
3

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

Сайед
источник