Я поражен болезнью, из-за которой я всегда остаюсь неудовлетворенным, независимо от того, насколько полнофункциональной является часть программного обеспечения.
Я вполне доволен возможностью быстро удалить/стереть/изменить/и т. д. диапазон текста, начиная с курсора.
Но, похоже, нет хорошего способа быстро, но точно перемещаться по фактическому курсору так, как я считаю оптимальным:
Учтите, что при редактировании кода (при редактировании прозы это не проблема) вы имеете дело с тяжелым синтаксисом с '"[{(<
символами, распределенными между пробелами (я отказался от вкладок в пользу всех пробелов для гибкости, но это не влияет на это). Это означает, что любой полезный способ перехода между символами, не являющимися словами, будет пропускать границы кода, между которыми часто необходимо выполнять операции редактирования.
Таким образом, хотя b
, e
, w
и их смещенные (обратные движения) аналоги (и никогда не используемые мной ge
/gE
) в определенной степени полезны, они не обеспечивают полезной детализации для обнуления.
Вот моя идея: загадочная клавиша X как расширение f
и t
с поиском вперед (и их аналогов F
и T
с поиском назад), который принимает два аргумента нажатия клавиши, а не один:
что, учитывая это начальное состояние, когда курсор находится на символе n
во второй строке:
watch: {
files: ['<%= jshint.files %>'],
} // Cursor Here ^
Я могу ввести Xjs
, и это будет искать слева от курсора первое j
, искать справа от курсора первое s
и выполнять операцию в этом диапазоне.
например cXjsfoo
выходов
watch: {
files: ['<%= foo %>'],
}
cXjtbaz
дает (иногда эквивалентно ciwbaz
, но точнее, так как iw
зависит от iskeyword!)
watch: {
files: ['<%= baz.files %>'],
}
dX%%
выдергивает %= baz.files %
(это невозможно даже с surround.vim
, так как %
не распознается как совпадающая пара, и я бы не хотел, чтобы она обязательно рассматривалась как одна):
watch: {
files: ['<>'],
}
и так далее.
Возможно, еще один способ думать об этом — это ретроактивный метод перемещения курсора в начальную точку после указания глагола.
Да, технически не так уж сложно просто сделать F%df%
, но dX%%
просто имеет больше смысла в моей голове, и в результате F%df%
для меня на самом деле никогда не бывает быстрее, чем, например. hhhhhhhdf%
. Далее учтите, что X
можно было бы легко привязать к одной клавише, поэтому в этом случае мы фактически сохраняем два нажатия клавиши.
Я знаю, что могу сделать это с помощью привязки клавиш в винтажном режиме Sublime Text; он достаточно мощный. Но как насчет Вима? Является ли это возможным?