В vim, если я вхожу и покидаю режим редактирования, ничего не делая, каретка заканчивается на один символ слева. И если я вхожу и покидаю режим добавления, каретка перемещается вперед и затем назад.
Любой способ настроить vim, чтобы оставить карету в этих случаях?
В идеале я просто хочу всегда входить в режим добавления, но без перемещения каретки, когда я вхожу или покидаю режим.
(В настоящее время я обычно использую режим вставки, потому что он не портит мою позицию каретки при входе. То есть, за исключением случаев, когда мне нужно добавить в конец строки, и в этом случае я клянусь vim за поведение в такой архаичной манере , нажмите Esc и войдите в режим добавления.)
i
илиa
не думать об этом, и может быть дажеs
,S
,ci"
, и т.д. , а не ограниченнаяi
иa
.Ответы:
Этот вопрос часто задают среди новых пользователей vi / Vim, и ответ таков: в обычном режиме курсор всегда находится «на» символе, а в режиме вставки курсор всегда «между» двумя символами (помните, конец офлайн это персонаж). Вы не можете увидеть это наглядно в консоли Vim, но в графическом интерфейсе вы заметите, что курсор становится полосой между двумя символами, когда вы входите в режим вставки, вместо блока над символом, когда вы находитесь в обычном режиме.
Таким образом, то, что вы видите, - это не обязательно перемещение курсора на один символ назад, когда вы выходите из режима вставки, а просто перемещение на символ. Единственное безопасное направление движения - влево (или назад). Таким образом, у вас есть несколько способов входа в режим вставки:
Некоторые люди пытались подавить это «движение», которое им не нравится, но оно неизбежно мешает плагинам и другим скриптам Vim, которые они хотят запустить в будущем.
Я предлагаю привыкнуть к использованию команд "a" и "i" (и "A" и "I") в соответствующих обстоятельствах.
Команды "o" и "O" также полезны для изучения. Видеть:
Изменить: Если вы все еще решили изменить это поведение, попробуйте следующий совет: не допускайте перемещения курсора на один символ влево
источник
a
вместоi
.<esc>
действительно помешает большинству подключаемых модулей<esc>
работать корректно, но также будет продолжать раздражать вас, когда вы будете использовать другие стандартные функции, которые возвращаются в обычный режим тем же способом,<esc>
что и вы. Научиться использовать правильную клавишу на лету - это решение, которое масштабируется / работает в долгосрочной перспективе.Я думаю, под каратом вы подразумеваете свой курсор, и если вы используете «i», это вставит непосредственно туда, где находится ваш курсор, «a» (который, я полагаю, вы ищете) перемещает курсор на один символ вправо. Кроме того, shift-i (I) будет идти к началу строки, а shift-a (A) будет идти до конца строки.
Если я неправильно понял ваш вопрос, прошу прощения.
источник
Поскольку переназначение
<ESC>
считается «рискованным», я просто объединяюсь с одним из подходов « Избегать нажатия клавиши» и имею в моем коде следующее.vimrc
:Примечание. Убедитесь, что в конце строки нет пробелов.
Простой, но полностью сертифицированный как «отлично работает для меня», поскольку это именно то, что в противном случае мне пришлось бы печатать вручную.
Использую ли я
a
илиi
все еще заставляю поведение перемещать каретку назад, и это чертовски раздражает меня, так как чаще всего следующее, что я хочу напечатать, этоd$
удалить в конец строки и т. Д.источник
Вот мое решение:
Это забавно. Этот же вопрос существует на всех трех сайтах: SO, SU, Unix + Linux.
источник