Сначала позвольте мне показать обычное поведение Vim, когда Slimv не включен.
vim foo.c
.void f()
Курсор теперь находится в позиции 2,1 (2-я строка, 1-й столбец).
После установки Slimv, если я выполню шаги, описанные выше, в конце я найду курсор в позиции 2,5 (2-я строка, 5-й столбец) с четырьмя пробелами, вставленными в качестве отступа перед 5-м столбцом автоматически.
Как я могу отключить это поведение Slimv для файлов, отличных от Lisp (таких как файлы .c
)?
@D.BenKnoble Спасибо! Сообщил об этом как о проблеме автору Slimv: github.com/kovisoft/slimv/issues/72
Сначала добавьте в свой файл vimrc
следующие две строки:
filetype indent off
filetype plugin indent off
Тогда вы должны надеяться, что это сработает! Но велика вероятность, что не будет...
Если решение не работает, возможно, вам придется выполнить довольно сложные действия, чтобы решить проблему.
Проблема в том, что многие из ваших параметров vim постоянно меняются множеством триггеров и автоматических команд. Единственный способ, который я нашел, это пометить важные опции (опции, которые я не хочу менять) специальным символом, а затем принудительно восстановить их после любого возможного воздействия. Итак, я сделал следующее в своем vimrc
:
augroup MyVimrc
autocmd!
augroup END
"The options I want to keep unchanged, I mark with the “❗” symbol.
"The usual exclamation sign “!” will work as well.
"Of course, you’re free using any other symbol you like,
"but don’t forget the lambda-function in the hack below.
"These are the options that may influence on the indent.
set formatoptions=j "❗
set autoindent "❗
set nosmartindent "❗
set indentexpr= "❗
set copyindent "❗
set preserveindent "❗
"And I marked with the same way a number of other
"important (for me) options… (not shown here)
"At the bottom of the vimrc file, I wrote this dirty hack.
function! s:keep_options()
for line in filter(readfile($MYVIMRC), 'v:val =~ ''\v\".*(!|❗)\s*$''')
exe line
endfor
endfunction
command! KeepOptions call <SID>keep_options()
"Note, the “OptionSet” trigger doesn’t work always, so that I preferred “BufEnter”.
autocmd MyVimrc BufEnter * KeepOptions
И все заморочки с непредсказуемым изменением моих настроек, наконец, ушли.
Проблема вызвана этой строкой в paredit.vim:
filetype indent on
Я добавил параметр g:paredit_disable_ftindent
в paredit.vim, чтобы отключить загрузку файлов отступов, добавьте эту строку в свой .vimrc
при использовании paredit.vim (или slimv, который также содержит paredit.vim):
let g:paredit_disable_ftindent=1
Если Slimv закодирован правильно, он вообще не должен влиять на файлы, отличные от Lisp. Вы можете немного покопаться в его коде и посмотреть, устанавливает ли он параметры, связанные с отступом, и как