Почему Vim позиционирует курсор на один символ с $ (конец строки)? - PullRequest
22 голосов
/ 31 декабря 2010

Наблюдайте строку в экземпляре Vim:

Теперь я нажал $:

Почему мой курсор не доходит до конца? Как только я пытаюсь вставить, текст вставляется перед последним символом! Даже если я попытаюсь снова двигаться вправо, находясь в обычном режиме, я получу звонок. Как ни странно, в режиме редактирования я могу перейти к реальному концу строки с помощью клавиши со стрелкой вправо!

Кто-нибудь знает, почему Vim делает это? На 7.3 кстати. Спасибо за помощь.

Ответы [ 4 ]

25 голосов
/ 31 декабря 2010

При нажатии $ в командном режиме курсор перемещается в конец строки, эффективно выделяя последний символ. Нажмите i здесь, чтобы вставить перед последним символом, или a , чтобы добавить к строке. Это немного двусмысленно, потому что вы используете символ трубы в качестве курсора, а не прямоугольного курсора блока. Посмотрите на ": help termcap-cursor-shape", если хотите это изменить.

Если цель состоит в добавлении в конец строки, A перейдет в конец строки и войдет в режим вставки одним нажатием клавиши.

9 голосов
/ 31 декабря 2010

Используйте a для добавления символа после текущего.

Или, чтобы перейти к концу строки и добавить в 1 шаг, используйте прописную A. То есть смещение A .

Аналогично shift - I для вставки в начале строки без предварительного нажатия ^ .

4 голосов
/ 31 декабря 2010

Курсор не может быть между двумя символами, он всегда находится на символе.

Если вы нажмете $, а затем x, вы правильно удалите последний печатный символ текущей строки.

Что вы наблюдаете, так это тот факт, что, используя i, вы всегда вставляете свой текст перед выбранным символом.Если вы хотите вставить после выбранного символа, вы должны использовать a или лучше A, как это уже упоминалось.

Другими словами:
i означает «вставить перед символом под курсором».
a означает «вставить после символа под курсором».

мнемоника для a: a для "добавления".

1 голос
/ 31 декабря 2010

Курсор полностью позиционируется в конце после нажатия $ . Он не может выходить за пределы последнего символа, поскольку подразумевает добавление нового символа в строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...