Как отключить автоматический отступ Slimv для файлов, отличных от Lisp?

Нетонкое поведение

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

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

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

Тонкое поведение

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

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

Если Slimv закодирован правильно, он вообще не должен влиять на файлы, отличные от Lisp. Вы можете немного покопаться в его коде и посмотреть, устанавливает ли он параметры, связанные с отступом, и как

D. Ben Knoble 03.06.2019 14:39

@D.BenKnoble Спасибо! Сообщил об этом как о проблеме автору Slimv: github.com/kovisoft/slimv/issues/72

Lone Learner 04.06.2019 04:58
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
272
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

Другие вопросы по теме