Як змусити Vim адаптуватися до поточного стилю відступу файлу, який я редагую?


39

Я працюю над низкою проектів JavaScript. У більшості цих проектів відступ файлів JavaScript становить 2 пробіли, тому я встановив мою ширину відступу за замовчуванням для цього. Однак це стає 1 або 4 в деяких інших проектах.

Чи є спосіб попросити Vim змінити стиль відступу на основі стилю, який вже використовується в поточному файлі?


Чому ви не додаєте такі налаштування в .vimrc для певного типу файлів? :au BufEnter *.js :set shiftwidth=2. Це працює для всіх проектів,
SibiCoder

1
@SibiCoder: Тому що навіть один і той же тип файлу може мати різні стилі відступу в різних проектах. (наприклад: проекти, що не належать одній і тій же компанії)
thameera

*.*це просто візерунок. Ви також можете використовувати ім'я файлу або шлях. Або ви можете використовувати подібні автоматичні команди, як те, що я дав, для кожного файлу. Ви можете доручити автоматичній команді взяти ширину вкладки поточного файлу і поставити його для шляху цього файлу. Це досить просто.
SibiCoder

Відповіді:


28

Щоб додати відповідь @Undo вище. У Тіма Попа також є плагін, який намагається зробити те ж саме в tpope / vim-sleuth


5
Здається, Sleuth працює трохи краще, ніж detectindent, на мій досвід, а також спробує визначити належні параметри відступу для нових файлів, переглянувши інші файли поблизу файлової системи.
Jamessan

@jamessan цього не знав, добре знати.
Dhruva Sagar

2
Будь ласка, прочитайте нашу політику щодо відповідей щодо плагінів та додайте детальну інформацію про те, як саме використовувати рекомендований плагін для вирішення проблеми.
200_успіх

15

Я не використовував його, але ціаранм / детектор може бути тим, що ви шукаєте. Здається, він активний (востаннє оновлено 25 днів тому), і виглядає так, що робить все, що хочеш:

Плагін Vim для автоматичного визначення параметрів відступу. Цей плагін додає команду DetectIndent, яка намагається інтелектуально встановити параметри 'shiftwidth', 'extensiontab' та 'tabstop' на основі існуючих параметрів, які використовуються в активному файлі.


Цей плагін вже не знаходиться в активному розвитку. (Остання зміна була 3 роки тому .)
Mateen Ulhaq
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.