Налаштування параметрів пробілів Vim у форматі файлів


155

У своїй роботі я вимагаю дотримуватися стилю будинку для відступу, який полягає в наступному:

  • 2 пробіли при кодуванні html та ruby
  • вкладки при кодуванні JavaScript, з табл. = 4 рекомендується

Який найкращий спосіб визначити різні налаштування пробілів для файлів?



Усі ці відповіді просто збентежили мене. Проблема в тому, що варіанти залежать від переваг. Однак прийнята відповідь має приємний синтаксис. Це був чудовий путівник: vimcasts.org/transcripts/2/en
Мікаел Ліндльоф

Відповіді:


245

Є багато способів, але ось простий, зрозумілий спосіб. додайте ці рядки до своїх ~/.vimrc:

autocmd FileType html setlocal ts=2 sts=2 sw=2
autocmd FileType ruby setlocal ts=2 sts=2 sw=2
autocmd FileType javascript setlocal ts=4 sts=4 sw=4

27
ts = 'кількість пробілів, у яких <Tab> у файлі використовується' sts = 'кількість пробілів, які <Tab> використовує під час редагування' sw = 'кількість пробілів, які потрібно використовувати для (авто) кроку відступу', детальніше див.: vimdoc.sourceforge .net / htmldoc / quickref.html # option-list
zdsbs

Мені потрібно було додати розширення, хоча б для рубіну, дивіться відповідь "занадто багато php" тут
Майкл

87

Відповідь Петра досить проста, але, на жаль, варіанти невірні. Натомість потрібно використовувати наступні параметри:

autocmd Filetype html setlocal ts=2 sw=2 expandtab
autocmd Filetype ruby setlocal ts=2 sw=2 expandtab
autocmd Filetype javascript setlocal ts=4 sw=4 sts=0 noexpandtab

Також зверніть увагу:

  • Ви можете створити символи вкладки vim show за допомогою :set list.
  • Після правильного встановлення параметрів вкладки / пробілу, ви можете змусити відновити файл vim (замінити пробіли вкладками або навпаки) за допомогою :retab!команди.

2
Яка вигода expandtabнадsts=2
Джеймс Макмахон

12
@JamesMcMahon extensiontab розширює всі вкладки на пробіли. sts (softtabstop) вставляє пробіли та вкладки для відступів: стільки вкладок, скільки вміститься в відступі, залежно від розміру тактового стопу, а потім пробілів після цього. Звичайно, якщо розгорнути вкладку, усі вкладені вкладки перетворюються на пробіли. stackoverflow.com/questions/1562336/… може допомогти надалі. Без вкладки розгортання відповідь Петра вставив би вкладки, що мають 2 символи, а не пробіли.
ajmccluskey

35

+1 до відповіді Петра, але Вім також пропонує інше рішення. Якщо ви хочете зробити щось складніше, ніж одиничне setlocal, як, наприклад, встановити цілу купу опцій, команд та відображень відразу, тоді на допомогу приходить функція плагіну від філетипу Vim.

Вам потрібно мати filetype plugin onабо filetype plugin indent onв своєму .vimrc, а потім створити плагін для, наприклад, рубіна, який ви можете створити ~/.vim/ftplugin/ruby.vim. Технічно ви можете використовувати будь-які команди , як тут, щоб працювати , коли файл рубін завантажений, але рекомендовані включає в себе setlocal, map <buffer>, command -buffer, і визначають функції. Більше інформації можна знайти в Посібнику користувача якщо ви досить добре знайомі з сценарієм vim, тоді переходьте до :help 41.11, інакше читайте :help usr_40і :help usr_41.


10

Існує також хороший скрипт vim: DetectIndent, який намагається виявити відступ файлу, який ви відкриваєте. Це дуже зручно, якщо ви працюєте з багатьма файлами з різним стилем кодування.

Я використовую автокоманду у своєму .vimrc :

:autocmd BufReadPost * :DetectIndent 

0

Щоб вставляти символи пробілу кожного разу, коли натискається клавіша вкладки, встановіть опцію 'розширення':

:set expandtab

Наступним кроком є ​​контроль кількості символів пробілу, які будуть вставлені при натисканні клавіші табуляції, встановіть опцію 'tabstop'. Наприклад, щоб вставити 2 місця для вкладки, використовуйте:

:set tabstop=2

ref: http://vim.wikia.com/wiki/Converting_tabs_to_spaces

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