Автоматический код отступа /формата для Vim?

Я пытаюсь использовать Vim все больше и больше, когда смогу. Одним из моих самых больших захватов между Vim и IDE, таких как Aptana, является возможность автоматического отступа.

Есть ли способ автоматического форматирования кода (HTML, CSS, PHP), поэтому он имеет правильный отступ?

Если да, то как это установить в vim? Я не очень понимаю плагинов. Я попытался рассмотреть эту тему, и это смутило меня больше: Как изменить vim auto -общее поведение?

vim
25 голосов | спросил chrisjlee 2 ndEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 02 Sep 2011 00:47:36 +0400 2011, 00:47:36

7 ответов


41

Вставить весь файл автоматически:

gg
=G

Разъяснения:

  • g - перейти к
  • gg - перейти к началу файла
  • G - перейти к концу файла
ответил takeshin 2 ndEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 02 Sep 2011 09:46:54 +0400 2011, 09:46:54
10

Я не знаю об автоматическом форматировании существующего кода, но если вы пишете код и нужен автоматический отступ:

  • :set autoindent (или :set ai) включается авто-отступ
  • Ctrl - d к отступу (AKA outdent) ваш код
  • Вкладка или пробелы для отступа - я лично использую вкладку
  • :set tabwidth=4 (или :set tw=4) будет управлять тем, как много пробелов вкладка должна иметь отступ код
  • Команда >> будет отступать от текущей строки. Если вы префикс его числом, скажем 4>>, тогда будет отступ 4 строки, начиная с текущей строки.
  • Аналогично команда << будет отступать строка

Надеюсь, это даст вам хорошее начало.

ответил Hai Vu 2 ndEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 02 Sep 2011 01:02:29 +0400 2011, 01:02:29
4

Auto Indent *.sh

Просто добавьте следующие строки в ~./vimrc

filetype indent on
set smartindent
autocmd BufRead,BufWritePre *.sh normal gg=G
ответил Rahul Patil 21 SatEurope/Moscow2013-12-21T00:12:57+04:00Europe/Moscow12bEurope/MoscowSat, 21 Dec 2013 00:12:57 +0400 2013, 00:12:57
2

Этот плагин упрощает выполнение форматирования кода. Он объединяет внешние форматирующие элементы и имеет резервную функциональность отступа vim.

https://github.com/Chiel92/vim-autoformat

Также обратите внимание на разницу между форматированием и отступом. Отступы только корректируют пробелы перед каждой строкой, в то время как форматирование также касается любой другой вещи, такой как пробелы вокруг операторов и т. Д.

ответил Chiel ten Brinke 21 SatEurope/Moscow2013-12-21T00:01:17+04:00Europe/Moscow12bEurope/MoscowSat, 21 Dec 2013 00:01:17 +0400 2013, 00:01:17
0

В bash я делаю это:

source <(echo "Zibri () {";cat script_to_be_reindented.sh; echo "}")
declare -f Zibri| cut -c 5-|head --lines=-1|tail --lines=+3

это устраняет комментарии и повторяет сценарий «bash way». он не будет работать, если скрипт содержит HEREDOCS, но если вы это сделаете:

source <(echo "Zibri () {";cat script_to_be_reindented.sh; echo "}")
declare -f Zibri|head --lines=-1|tail --lines=+3

он будет работать с любым скриптом, но весь скрипт будет отступом на 4 пробела. не стесняйтесь изменять, но цитируйте мое имя в своем сценарии и опубликуйте его! : D

ответил Zibri 15 ThuEurope/Moscow2016-12-15T04:10:48+03:00Europe/Moscow12bEurope/MoscowThu, 15 Dec 2016 04:10:48 +0300 2016, 04:10:48
0

Создайте /отредактируйте файл ~/.vimrc и добавьте следующую строку:

set autoindent
ответил Akshat Maheshwari 30 Jam1000000amMon, 30 Jan 2017 08:10:34 +030017 2017, 08:10:34
0

autoformat /indent vim работает очень хорошо. Сначала поместите эту строку в свой ~/.vimrc:

filetype plugin indent on

Затем откройте файл в vim и введите gg=G

(gg перемещает курсор в первую строку. = запускает команду indent. G указывает команде indent для запуска отсюда до последней строки.)

Если автоформат выглядит очень плохо, так как каждая строка имеет только отступы, затем запустите :scriptnames и проверьте, если .../indent/html.vim (или любой другой язык, который вы используете) находится в списке. Если нет, убедитесь, что ваш код ~/.vimrc верен. Или, если вы запустили :filetype plugin indent on из командной строки vim, вам нужно будет снова открыть файл :e

ответил wisbucky 22 J0000006Europe/Moscow 2018, 21:40:38

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132