ярлик vi для видалення "до наступного символу X"


194

Я розумію, що vi має ярлики для видалення символів, слів та рядків з різними параметрами.

Однак я не зміг цього знайти:

  • видалити з курсору до наступного вказаного символу

Наприклад, я можу набрати du"очікування редактора "видалити, поки не "буде знайдений наступний символ"

Найближче мені відомо, d9wде 9є кількість слів, які потрібно видалити.

Хтось знає, чи це можливо?


Якщо вас цікавлять Vi і Vim, у них зараз є власний веб-сайт SE: Vi and Vim
десерт

Відповіді:


303

Використовуйте dtc, де c - будь-який символ, наприклад, для вас, який ви хочетеdt"

Це видалить до, але не включаючи c .

Якщо у вас були:

delete until exclamation point!

І курсор був у першому просторі, і ви набрали dt!:

delete!

Також dfc.

Це призведе до видалення Шифрування до і включаючи гр .

Використовуючи df!на тому ж прикладі вище, ви отримаєте:

delete

Просто про яке - або «рух» може бути використано для d, c, yі інших подібних команд.


7
Імовірно, мнемонічне значення t до "до"? Гарна відповідь.
передумати

15
Ви також можете видалити попередній екземпляр символу за допомогою великої версії команд руху. Можливо, корисніше для коми - dT,і dF,.
joelostblom

3
Це не працює в декількох рядках.
0xcaff

3
Чи можна це зробити за діапазоном ліній?
Рей

2
Для того, щоб робити щось подібне в діапазоні рядків, можна виконати звичайний пошук (як у відповіді zpletan): d/wordпошук до word. Після цього слід ввести Enter (для закриття пошуку).
Ерік О Лебігот

59
  • Для видалення вперед до символу "X" типу dtX

  • Для видалення вперед через символ "X" dfX

  • Щоб видалити назад тип "X" символу dTX

  • Щоб видалити назад за допомогою символу "X" dFX


30

Вхідний dt # (не команда: використовуйте його як рух, як G)

буде видалено з курсору до тих пір, поки не включить #. Ви можете замінити будь-який символ на #.


2
Це правильна відповідь! df # також видалить #.
В'єт

шукав цього, це дивовижно
Надія Кхедр

18

Схоже, @Arcege вже відповів на питання, але я його d/lвидалив, поки персонаж не був l; інші персонажі також працюватимуть.


3
Це працює для матеріалів у нових рядках.
jasonszhao

Примітка. Після цього слід додати Enter.
Ерік О Лебігот

6

wпереходить до наступного слова. lпереходить до наступного charactor.

Отже, d9lслід видалити наступні 9 символів.


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