Вы можете переназначить Home так, чтобы он совпадал с ^ (в документах говорится, что функция Home по умолчанию эквивалентна команде перемещения 1). |):
:map <Home> ^
:imap <Home> <Esc>^i
Что должно сделать сопоставление режима вставки эквивалентным выходу из режима вставки, нажатию ^ и последующему возврату в режим вставки. Я не знаю наилучшего метода сопоставления команды движения для использования в режиме вставки, поэтому это может что-то сломать, но, похоже, это работает.
Что касается ваших настроек отступов, они не должны влиять на элементы управления движением, но я также думаю, что вы, вероятно, предпочтете, чтобы они были установлены по-другому. autoindent просто сохраняет ваш текущий отступ для новых строк (поэтому, если вы поместите 4 пробела в начале строки, после того, как вы нажмете клавишу возврата, ваша новая строка также будет иметь 4 пробела перед ней). Я не знаю, почему вы этого не хотите, поскольку это очень полезно практически на любом языке программирования или даже просто в произвольном тексте. smartindent, с другой стороны, реализует пару жестко запрограммированных правил отступов в стиле C, таких как отступ после открытия { и удаление отступа после закрытия }, но не переносит автоматически отступ из предыдущих строк. В документации рекомендуется оставить включенным автоматический отступ, если вы используете умный отступ.
Однако smartindent бесполезен для языков, которые не соответствуют его жестко закодированным правилам, или даже активно вреден (например, когда он автоматически удаляет отступы из любой строки, начинающейся с «#», что, по его мнению, является директивой препроцессора, но неверно для программисты на Python, пытающиеся написать комментарий с отступом).
Таким образом, vim также включает более продвинутый режим отступа, отступ типа файла, который позволяет использовать гибкие правила отступа для каждого языка/типа файла и является предпочтительным режимом отступа для большинства людей (даже для C-подобных языков). Если вы используете отступ типа файла, лучше отключить smartindent (в противном случае он может помешать отступу типа файла, например, перемещение всех строк комментариев в столбец 0 в файлах Python).
Лично я всегда включаю автоматический отступ, использую тип файла, когда он доступен, и никогда не использую умный отступ. Мой .vimrc включает в себя:
set autoindent " doesn't interfere with filetype indents, and is useful for text
if has("autocmd")
" Enable file type detection and indentation
filetype plugin indent on
set nosmartindent
endif
Я предполагаю, что вы могли бы что-то сделать, чтобы smartindent включался только тогда, когда отступ типа файла не существует для типа файла, если вы редактируете столько разных C-подобных языков без доступного отступа типа файла.
person
Jeffson
schedule
16.02.2010