Всякий раз, когда я добавляю символ :
в Vim в режиме Python, он либо:
- вставляет строку
- выделяет строку
- ничего не делает
Что он даже пытается сделать, и как мне избавиться от этого поведения?
Всякий раз, когда я добавляю символ :
в Vim в режиме Python, он либо:
Что он даже пытается сделать, и как мне избавиться от этого поведения?
Некоторые клавиши при нажатии будут вызывать функцию отступа Vim, которая будет пытаться установить правильное количество отступов в текущей строке. (Вы можете вручную запустить это, набрав ==
в нормальном режиме.)
Вы можете изменить, какие клавиши запускают это поведение, но сначала вам нужно знать, какой режим отступов используется.
Сначала выполните :set indentexpr?
. Если это непусто (я бы ожидал этого для Python), то используется режим indentexpr
. В этом случае выполнение :set indentkeys?
дает вам список триггерных ключей. Чтобы удалить двоеточие, выполните :setlocal indentkeys-=:
.
Если indentexpr
пуст, вы, вероятно, используете режим cindent
, а :set cindent?
сообщит вам, что установлен cindent
. В этом случае сделайте то же самое, что и раньше, но используйте cinkeys
вместо indentkeys
. (Обратите внимание, что режим indentexpr
имеет приоритет над режимом cindent
.)
Он пытается быть полезным. Если вы хотите отключить автоматический отступ для текущего файла,
:setlocal noautoindent
:setlocal nocindent
:setlocal nosmartindent
:setlocal indentexpr=
Или вы можете добавить набор в свой файл vimrc. Вы также можете сделать это для каждого типа файла. См. здесь
Ответ Натана Григга поставил меня на правильный путь. Мне пришлось внести несколько изменений для моей настройки.
Мне пришлось использовать :setlocal indentkeys-=<:>
, потому что в моем случае :set indentkeys?
показал indentkeys=0{,0},!^F,o,O,e,<:>,=elif,=except
.
Кроме того, размещение :setlocal indentkeys-=<:>
в .vim/after/ftplugin/python.vim
не помогло сделать изменение постоянным. Я обнаружил, что есть встроенный файл indent python vim, который запускается ПОСЛЕ этого файла после ftplugin.
Диагностировать, открыть файл Python для редактирования и запустить :scriptnames
. Это покажет вам список всех скриптов vim, которые были запущены, в порядке приоритета. Сценарии внизу этого списка были применены совсем недавно и имеют приоритет. См. этот вопрос в SuperUser для получения дополнительной информации.
Когда я это сделал, он показал мне встроенный файл vim в /my-install-path/vim/7.4.1830/share/vim/vim74/indent/python.vim
. Разумеется, это установило <:>
как часть отступов.
Чтобы исправить это, я установил автокоманду в .vimrc, и это действительно последнее слово.
autocmd FileType python setlocal indentkeys-=<:>
Обновление
Мне пришлось добавить :setlocal indentkeys-=:
в конце концов. Вот что у меня в моем .vimrc
сейчас.
autocmd FileType python setlocal indentkeys-=<:>
autocmd FileType python setlocal indentkeys-=: