Як я можу автоматично відступити на нових рядках?


15

Я працюю над проектами з різним рівнем відступу. У багатьох з цих проектів більшість рядків розміщені з відступом як мінімум на два рівні (наприклад, методи у файлах Java).

Це означатиме, що створення нового рядка, коли він знаходиться на лінії

public void something () {

Приведе мій курсор до наступного рядка, автоматично з відступом, як

public void something () {
    [cursor]

Хоча я можу кілька разів натиснути клавішу вкладки на новому рядку, щоб змусити її вирівнятися, чи є кращий спосіб зробити це (можливо автоматично)?

Відповіді:


12

Це можна зробити за допомогою комбінації autoindentпараметра та filetypeплагіна.

Цей autoindentпараметр скопіює ваш поточний відступ під час створення нового рядка. Отже, якщо ваш поточний рівень відступу дорівнює 4, коли ви починаєте новий рядок, курсор буде переміщений до того ж рівня відступу в наступному рядку.

У свій ~/.vimrcфайл ви б помістили

set autoindent

Ви також можете використовувати filetypeплагін для автоматичного визначення наступного рівня відступу на основі типу файлу.

Ви можете це ввімкнути за допомогою

:filetype indent on

Або у своєму ~/.vimrcфайлі ви б помістили

filetype plugin indent on

Який автоматично визначатиме відступ залежно від типу файлу.


6

Використовуйте :set cindent( :set cinдля короткого) або :set smartindent( :set siдля короткого). Якщо ваша лінія закінчується вступною дужкою, і ви натискаєте Enter, наступний рядок автоматично буде відступ одним додатковим рівнем. (Це краще, ніж те :set autoindent, що лише відступає наступний рядок на тому ж рівні.) cindentКраще підходить до мов, подібних С, в той час як smartindentє більш універсальним для використання з іншими мовами програмування.

Кількість і тип відступів контролюється за допомогою :set shiftwidth=…та :set tabstop=…, та :set expandtab.


'smartindent'застаріла, тому це не найкращий вибір. Він був замінений 'cindent'і 'cinoptions'на C-подібних мовах. Однак, як правило, відступ типу файлу - це шлях, який можна зробити 'autoindent'як резервний.
Jamessan

@jamessan smartindentне застарілий, але cindentце варто зазначити. Я оновив відповідь. (Дякую!)
200_суспіль

Я також рекомендую вам поглянути на editorconfig.org . Звичайно, є плагін для vim (та багато інших редакторів), і це чудовий спосіб зберегти за замовчуванням редактора на вашому VCS
Cyber ​​Oliveira

0

Внизу файлу я використовую:

# vim: ts=2 sw=2 sts=2 sr noet st ai si

Наприклад Dockerfile:

FROM centos-7
RUN ...
CMD ...

# vim: ts=2 sw=2 sts=2 sr noet st ai si

Якщо ви хочете зберегти лише відступ, використовуйте # vim: st ai si

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