vundle "фільтр плагін відступ на" повідомлення з шириною табуляції


9

Я встановив vundle вчора, і з тих пір, як я налаштував ширину табуляції, яку я налаштував у своєму vimrc, ігнорується і повертається до 4 замість 2.

Я з'ясував, що наступний рядок після абзацу в'яття викликає його:

filetype plugin indent on

Мій відступ налаштовано так:

set noexpandtab " Make sure that every file uses real tabs, not spaces
set shiftround  " Round indent to multiple of 'shiftwidth'
set smartindent " Do smart indenting when starting a new line
set autoindent  " Copy indent from current line, over to the new line

" Set the tab width
let s:tabwidth=2
exec 'set tabstop='    .s:tabwidth
exec 'set shiftwidth=' .s:tabwidth
exec 'set softtabstop='.s:tabwidth

Ви можете перевірити мій повний vimrc тут .

Я перевірив проблему відступу за допомогою сценарію python (де відступ дійсно має значення).

Я вже спробував перейти filetype plugin indent onна, filetype plugin onале це нічого не змінило. Тільки коментуючи цей рядок допомагає.
Тепер, посібник із встановлення ворсинки говорить, цей рядок потрібен.

Як виправити цю проблему з відступом? Чи можу я просто опустити рядок файлів або це обов'язково зберігати його у vimrc?

Рішення:

Завдяки @ChristianBrabandt та @romainl я знайшов рішення, яке також може знаходитися в одному файлі vimrc:

filetype plugin indent on

[...]

set noexpandtab " Make sure that every file uses real tabs, not spaces
set shiftround  " Round indent to multiple of 'shiftwidth'
set autoindent  " Copy indent from current line, over to the new line

" Set the tab width
let s:tabwidth=2
au Filetype * let &l:tabstop = s:tabwidth
au Filetype * let &l:shiftwidth = s:tabwidth
au Filetype * let &l:softtabstop = s:tabwidth

Хоча це не відповідає на ваше запитання, я спробував за допомогою vim-plug замість Vundle, і він спрацював чудово ...
nobe4


Ви також можете скористатися новим автокомандом OptionSet, щоб скинути ширину зсуву та налаштування програмного перемикання
Крістіан Брабандт

Відповіді:


10

Насамперед; рядок нижче абсолютно не має нічого спільного з Vundle або керуванням плагінами:

filetype plugin indent on

Ця команда виконує три речі:

  • дозволяє виявити тип файлу,
  • вмикає сценарії, характерні для файлів (ftplugins),
  • вмикає сценарії відступу для певного типу файлів.

Цей рядок є, тому що деякі менеджери плагінів повинні переконатися, що виявлення файлів відключено, перш ніж робити магію, а використання Vim для програмування буде смоктати набагато важче без ftplugins та належного відступу. На мою думку, вони повинні просто займатися виявленням файлетипу всередині, але добре ...

У будь-якому разі, вашу проблему викликають надмірно нав'язливі ftplugins, які переосмислюють ваші налаштування відступу на їхні. Пітфон ftplugin - найпоширеніший винуватець, оскільки не так давно було вирішено, що він повинен застосовувати PEP8.

Найпростішим виходом буде взагалі уникнути пошуку ftplugins:

filetype indent on

але зазвичай вони приходять з корисними речами, так що цей метод насправді не рекомендується.

Найчистішим рішенням є залишити filetypeлінію в своєму "оптимальному" стані:

filetype plugin indent on

і переосмислити їхні зміни над власними after/ftplugin/python.vim:

setlocal noexpandtab
setlocal shiftround
setlocal autoindent

let s:tabwidth=2
let &l:tabstop = s:tabwidth
let &l:shiftwidth = s:tabwidth
let &l:softtabstop = s:tabwidth

Примітки:

  • Я видалив, smartindentтому що це не так розумно починати з і все-таки застаріло за типовими сценаріями відступу для певного файлу.
  • Я замінив ваші :executeкоманди на більш чисті :letкоманди, щоб уникнути зайвого конкатенації.

1
Якщо встановити shiftwidthнуль і softtabstopдо -1, він буде дотримуватися налаштування вкладки.
Крістіан Брабандт

дякую за ваші пояснення. Я хотів би зберегти більшість моїх налаштувань у своєму vimrc, тому що я хочу синхронізувати їх на декількох комп'ютерах. Я використав ваше рішення в моєму vimrc і використав посилання на faq @ChristianBrabandt, розміщене під моїм запитанням, і воно працює. Я відредагую своє запитання, щоб включити своє рішення.
wullxz

4

Проблема з відступом виникає через ftplugin, який завантажує файл .vim з /usr/share/vim/vim-version-/ftplugin/-filetype-.vimцього місця, що замінює все, що у вас є у вашому .vimrcфайлі. ви можете дізнатися, де знаходиться цей файл, виконавши наступну команду всередині vim :verbose set tabstop?. Вихід буде вказувати на файл, який переосмислює вашу конфігурацію.

У моєму випадку у мене виникли проблеми з конфігурацією відступів python.

Простий спосіб вирішити це - зробити наступне:

Створіть папку .vim у своїй домашній папці (якщо у вас її немає)

cd ~/.vim
mkdir -p after/ftplugin/
cd ~/.vim/after/ftplugin/
vim python.vim

Додайте наступне:

setlocal noexpandtab shiftwidth=4 softtabstop=4 tabstop=4

Змініть все, що вам потрібно в команді. Моє виглядає так, тому що я працюю з вкладками замість пробілів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.