Почему Vim позиционирует каретку одного символа с $(конец строки)?
Соблюдайте строку в экземпляре Vim:
![]()
Теперь я ударил $:
![]()
Почему мой курсор не доходит до конца? Как только я попытаюсь вставить, текст будет вставлен перед последним символом! Даже если я попытаюсь двигаться вправо, пока все еще в нормальном режиме, я получаю звонок. Как ни странно, в режиме редактирования я могу перейти к фактическому концу строки с помощью клавиши со стрелкой вправо!
![]()
Кто-нибудь знает, почему Vim делает это? Кстати, 7.3. Спасибо за помощь.
Ответы
Ответ 1
Нажатие $ в режиме командной строки приводит к тому, что курсор перемещается в конец строки, эффективно выделяя последний символ. Нажмите i, чтобы вставить перед последним символом, или a, чтобы добавить к этой строке. Это немного неоднозначно здесь, потому что вы используете символ канала как курсор, а не прямоугольный блок-курсор. Посмотрите на "help termcap-cursor-shape", если вы хотите изменить это.
Если цель заключается в добавлении к концу строки, A переместится в конец строки и войдет в режим вставки одним нажатием клавиши.
Ответ 2
Используйте a
для добавления символа после текущего.
Или, чтобы перейти к концу строки и добавить в 1 шаг, используйте капитал a
. То есть shift A.
Аналогично shift - I для вставки в начале строки без предварительного нажатия ^
.
Ответ 3
Курсор не может находиться между двумя символами, он всегда находится на символе.
Если вы нажмете $
, затем x
, вы правильно удалите последний печатный символ текущей строки.
То, что вы наблюдаете, это тот факт, что с помощью i
вы всегда вставляете текст перед выбранным символом. Если вы хотите вставить после выбранного символа, вы должны использовать a
или лучше a
, как уже упоминалось.
Другими словами:
i
означает "вставить перед символом под курсором".
a
означает "вставить после символа под курсором".
Мнемоника для a
: a для "append".
Ответ 4
Курсор равен, расположенный полностью на конце после нажатия $. Он не может выходить за пределы последнего символа, поскольку он подразумевает добавление нового символа в строку.