Я уже несколько лет использую vim в качестве вторичного редактора, но по разным причинам я все больше и больше использую его, даже когда доступен мой основной редактор. Одна проблема, которая всегда меня беспокоила vim
, и которая мешала мне больше ее использовать, - это способ, которым она обрабатывает размещение курсора. Курсор может быть только на символе, а не между символами, как это было бы в случае с любым редактором, созданным с 1984 года.
Только для одного примера того, почему это проблема, если я хочу удалить последнее слово в строке, я нажимаю, $
чтобы перейти к концу строки, а затем db
удалить назад. Это оставляет символ для удаления, потому $
что на самом деле он не дошел до конца строки, он перешел к последнему символу строки и db
удалил только то, что было до текущего символа. Проблема не в том, что мне нужно набирать дополнительный символ, а в том, чтобы делать то, что должно быть простым, требует дополнительной мысли, которая отвлекает мое внимание от того, что я на самом деле пытаюсь выполнить.
Мне кажется, что более современная идея размещения курсора во всех отношениях лучше, и я бы хотел перейти vim
на этот подход. Я уверен, что некоторые vim
фанаты не согласятся с моим мнением по этому поводу, но поскольку одним из стандартных аргументов в пользу vim
превосходства является его бесконечная конфигурируемость:
- это может доставить в этом случае?
- Можно
vim
ли разместить курсор между символами?
Insert
режим или отсутствует точкаnormal
режима. Я бы сделал$daw
или$bdw
удалить последнее слово в строке в обычном режиме. ВInsert
режиме я бы сделалA<Ctrl-w>
.$bD
Ответы:
Вы можете
:set virtualedit+=onemore
, что позволяет вам пройти только мимо последнего персонажа. К сожалению для вас,$
до сих пор идет до последнего персонажа; Вы должны навести курсор, чтобы пройти это. С другой стороны, вы можете использоватьg$
, что обычно идет до последнего символа строки экрана в строке, которая переносится; вonemore
режиме он также проходит за последним символом строки без переноса (или последней строки экрана с переносом строки).:h 'virtualedit'
говорит, что эта опция может испортить сценарии, но я не знаю, насколько велик риск в реальности.источник