Как отключить автоматическое отступление Slimv для файлов, не относящихся к Lisp? - PullRequest
0 голосов
/ 03 июня 2019

Non-Slimv Behavior

Сначала позвольте мне показать нормальное поведение Vim, когда Slimv не включен.

  1. Создать новый файл: vim foo.c.
  2. Войдите в режим вставки: i
  3. Введите этот код: void f()
  4. Нажмите , введите

Курсор теперь находится в положении 2,1 (2-й ряд, 1-й столбец).

Поведение Slimv

После установки Slimv, если я выполняю действия, описанные выше, в конце я нахожу курсорв позиции 2,5 (2-й ряд, 5-й столбец) с четырьмя пробелами, вставленными как отступ перед 5-м столбцом автоматически.

Как отключить это поведение Slimv для файлов, не относящихся к Lisp (например, .c файлов)

Ответы [ 2 ]

1 голос
/ 15 июня 2019

Проблема вызвана этой строкой в ​​paredit.vim:

filetype indent on

Я добавил параметр g:paredit_disable_ftindent в paredit.vim, чтобы отключить загрузку файлов отступов, добавьте эту строку в .vimrc при использовании paredit.vim (или slimv, который также содержит paredit.vim):

let g:paredit_disable_ftindent=1
0 голосов
/ 08 июня 2019

Сначала добавьте в свой файл 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

И все неприятности с непредсказуемыми изменениями в моих настройках, наконец, прошли.

...