Vi ярлык для удаления "до следующего символа X"

Я понимаю, что в vi есть сочетания клавиш для удаления символов, слов и строк с различными опциями.

Однако я не смог найти это:

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

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

Самое близкое, что я знаю, это d9w где 9 это количество слов, которые нужно удалить.

Кто-нибудь знает, возможно ли это?

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

Это приведет к удалению до, но нет включая c.

Если бы у вас был:

delete until exclamation point!

И курсор был на первом пробеле, и вы набрали dt!, вы бы получили:

delete!

Также dfc.

Это приведет к удалению до и включая c.

С помощью df! на том же примере, приведенном выше, это даст вам:

delete

Практически любое "движение" может быть использовано для d, c, y и подобные команды.

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

  • Чтобы удалить пересылку через символ 'X', введите dfX

  • Для удаления назад до символа "X" введите dTX

  • Для удаления в обратном направлении через символ "X" введите dFX

Ввод dt# (не команда :, используйте ее как движение, например G)

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

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

w переходит к следующему слову. l переходит к следующему символу.

Так что это d9l чтобы удалить следующие 9 символов.

Я предлагаю использовать delete with pattern,

d/<pattern>

d является ли действие удалением

/ является ли vim знаком поиска

например, ниже приведена строка подключения к MySQL. Я хочу сменить пароль redhat к новому

root:redhat@tcp(localhost:3306)/?parseTime=True

В командном режиме я нажимаю w(переход к следующему слову), курсор переместится на ":", нажмите w снова переместит курсор на первый символ r пароля redhat. теперь нажмите d/@ будет удалять любые символы до тех пор, пока @ что в этом случае удалит redhat. d/@tcp лучше, если строка содержит более одного @, более патикулярный узор более точен.

Никто не упоминал об этом, поэтому я подумал, что тоже поделюсь этим.
Если вы хотите удалить до тех пор, пока не появится символ, который вы можете использовать dt и введите нужный символ. Если вы хотите удалить до тех пор, пока символ, но символ также находится в середине, например (hell(o) world) и вы хотите удалить из hell(o) до последнего ) и ваш курсор находится на h вы можете ввести номер, в этом случае 2dt) это позволит перейти к первому ).

Вы также можете использовать de (удалить конец), здесь под "концом" вы должны понимать "конец слова (не строки)", поэтому, если вы хотите удалить, например .world в (hello.world) и если ваш курсор находится на точке, вы можете ввести de.

Надеюсь, это поможет

Если вы заинтересованы в Vi и Vim, у них теперь есть свой собственный сайт SE: [vi.se ]