Я подозреваю, что проблема real в том, что дефисы не считаются частью идентификатора
Вы должны попробовать добавить
: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 . короткое имя приводит к
someobject.shortname.SUB.otherproperty
- c 2 . get (" приводит к
someobject.get("otherproperty
Не имеет значения , где в «точечном идентификаторе», с которого должен начинаться курсор. Обратите внимание, что для удобства все отображения в визуальном режиме помещают курсор в конец выделения (так что вы можете продолжать расширять выделение, например, %
и другими движениями).