Ответ 1
Я подозреваю, что реальная проблема заключается в том, что дефисы не считаются частью идентификатора
Вам следует попробовать добавить
:se iskeyword+=-
для вашего типа файла. Таким образом, v i w будет делать то, что вы хотите
Чтобы сделать этот параметр автоматическим, скажем, strange
файлов:
:autocmd BufReadPost *.strange se isk+=-
Добавляя эту строку к вашему vimrc (:e $MYVIMRC
), вам никогда не придется думать о добавлении параметра iskeyword. См. Также :he modeline
для альтернативных способов установки этого параметра для каждого файла
Обновить, еще более чистое решение создаст ваше собственное отображение оператора.
Быстрый проект этого, который, казалось, работал очень хорошо для меня:
xnoremap <silent>. f.oT.o
xnoremap <silent>a. f.oF.o
xnoremap <silent>i. t.oT.o
onoremap <silent>. :<C-u>exec 'normal v' . v:count1 . '.'<CR>
onoremap <silent>a. :<C-u>exec 'normal v' . v:count1 . 'a.'<CR>
onoremap <silent>i. :<C-u>exec 'normal v' . v:count1 . 'i.'<CR>
Примеры для содержимого следующего буфера (курсор на букву w
):
someobject.some-property-with-hyphens.SUB.otherproperty
- v . выбирает
some-property-with-hyphens.
в визуальном режиме - v a . выбирает
.some-property-with-hyphens.
в визуальном режиме - v i . выбирает
some-property-with-hyphens
в визуальном режиме
Движения могут быть закодированы и приняты count
:
- v . . выбирает
some-property-with-hyphens.SUB.
в визуальном режиме - v 2. также выбирает
some-property-with-hyphens.SUB.
в визуальном режиме - v 2 a . выбирает
.some-property-with-hyphens.SUB.
в визуальном режиме - v 2 i . выбирает
some-property-with-hyphens.SUB
в визуальном режиме
Вы можете использовать операторы как операторы для любой команды редактирования:
- d . приводит к
someobject.SUB.otherproperty
- c i . shortname приводит к
someobject.shortname.SUB.otherproperty
- c 2 . get(" приводит к
someobject.get("otherproperty
Не имеет значения, где в "разделителе с точками" должен начинаться курсор. Обратите внимание, что для удобства все отображения в визуальном режиме позиционируют курсор в конце выбора (так что вы можете продолжить расширение выделения, например, %
и других движений).