Я сейчас переключаюсь VIM
с TextMate. Я нашел ^+W
в режиме INSERT очень полезным. Однако я хотел бы удалить не только слово перед курсором, но и слово после или вокруг курсора.
Я немного погуглил, но единственное, что я могу найти, ^+W
это удалить слово ДО курсора.
vim
keyboard-shortcuts
Манты
источник
источник
imap <C-d> <C-o>diw
работает тоже. Это также не создает точку отмены, как это обычно делает <Esc>.Нормальный режим:
источник
da)
и ,ci)
но никогда не думал об этом!.vimrc
файле следующим образом:nmap <Leader>d daw
иnmap <Leader>c caw
aw
это один из примеров выбора объекта. Вы можете попробовать выбор объектов в визуальном режиме, чтобы увидеть, какой эффект они имеют: vimdoc.sourceforge.net/htmldoc/motion.html#object-selectЯ думаю это просто
daw
источник
a
это команда,Append text after the cursor [count] times.
но как онаdaw
работает?d
диктует, что вы будете «удалять». «A» является своего рода параметром, определяющим, что удаление должно включать разделитель. Наконец, «w», другой,parameter
если вы захотите, указывает, чтоword
юнит будет удален.dw
аdaw
?dw
удалится от курсора до конца слова, приdaw
этом удалит все слово вместе с пробелом.diw
удалит все слово, не касаясь пробелов вокруг него.Нижеследующее работает для нормального режима: я согласен с ответом Дэна Олсона о том, что для большинства удалений вы, вероятно, должны быть в нормальном режиме. Более подробная информация ниже.
Если курсор находится внутри слова:
diw
удалить в слове (без пробелов),daw
чтобы удалить вокруг слова (включает пробелы перед следующим словом).Если курсор находится в начале слова, просто нажмите
dw
.Это можно умножить, добавив обычные числа для движения, например, 2w для перемещения вперед на 2 слова, поэтому d2w удалит два слова.
Режим вставки ^ w
Идея использования hjkl для перемещения в Vim состоит в том, что более продуктивно держать руки на домашнем ряду. В конце слова ^ отлично работает, чтобы быстро удалить слово. Если вы перешли в режим вставки, ввели некоторый текст и с помощью клавиш со стрелками попали в середину слова, которое вы пошли против философии домашнего ряда.
Если вы находитесь в обычном режиме и хотите изменить слово, вы можете просто использовать
c
(изменить) вместоd
(удалить), если вы хотите полностью изменить слово, и снова войти в режим вставки, не нажимаяi
для возврата печатать.источник
Вы имеете в виду как?
источник
dw
не удалится через дефис или другую пунктуацию.Чтобы удалить все символы между двумя пробелами, в обычном режиме:
Чтобы удалить только одно слово:
источник
Не похоже, что есть какой-то встроенный способ сделать это в режиме вставки, что было вопросом. Некоторые из других ответов верны для обычного режима, а также указывают на то, что можно создать пользовательское сопоставление для добавления функциональности в режиме вставки.
Честно говоря, вы, вероятно, должны сделать большую часть удаления в обычном режиме. ^ W неплохо знать, но я не уверен, что могу придумать ситуацию, в которой я бы предпочел сделать это, чем перейти в обычный режим и получить более мощные команды удаления в моем распоряжении.
В этом отношении Vim сильно отличается от ряда других редакторов (включая TextMate). Если вы используете его продуктивно, вы, вероятно, обнаружите, что не проводите много времени в режиме вставки.
источник
Чтобы удалить все слово, на котором находится ваш курсор, используйте.
diw
Чтобы удалить все слово, на котором находится ваш курсор, и чтобы перевести вас в режим вставки, используйте,
ciw
если вы не хотите удалять все слово, но удаляете оттуда, где вы находитесь.
dw/cw
источник
Поскольку существует так много способов удалить слово, давайте проиллюстрируем их.
Предполагая, что вы редактируете:
и вызовите команду, когда курсор находится на панели «a» in:
источник
В режиме вставки такой команды, к сожалению, нет. В VIM, чтобы удалить все слово под курсором, вы можете ввести
viwd
в НОРМАЛЬНОМ режиме. Что означает " V isual-block I nner W ord D elete". Используйте верхний регистр,W
чтобы включить знаки препинания.источник
Принятый ответ не удаётся при попытке повторить удаление слов, попробуйте следующее решение:
Он отображает CTRL-BackSpace, также работает в обычном режиме.
источник
Для удаления определенного количества символов перед курсором вы можете использовать X. Для удаления определенного количества слов после курсора вы можете использовать dw (можно удалить несколько слов, используя 3dw для 3 слов, например). Для удаления вокруг курсора в целом, вы можете использовать галку.
источник
В старом vi
b
перемещает курсор в начало слова перед курсором,w
перемещает курсор в начало слова после курсора,e
перемещает курсор в конец слова после курсора иdw
удаляет курсор из конца слова.Если вы печатаете
wbdw
, вы удаляете слово вокруг курсора, даже если курсор находится в начале или в конце слова. Обратите внимание, что пробелы после слова считаются частью слова, которое нужно удалить.источник
Не совсем уверен, что вы используете "до" и "после", но вы пытались
?
Изменить: Я думаю, вы ищете что-то для использования в режиме вставки. Как ни странно, в документах ничего не найдено, кажется, что ctrl-w - это все, что есть.
источник
Я сделал два сопоставления, чтобы получить согласованность в режиме вставки и выхода из режима вставки.
:map <'Key of your choice'> caw
:imap <'Key of your choice'> <'Esc'> caw
источник
В этом случае решение, предложенное ОП (т.е. использующее
<c-w>
), может быть объединено с принятым ответом, чтобы дать:альтернативно (более короткое решение):
Пример ввода:
Вывод:
источник