Как выровнять код (фигурные скобки, скобки и т. Д.) В vi? - PullRequest
26 голосов
/ 06 апреля 2010

Как выполнить предварительную проверку / выравнивание / форматирование кода в vi? Что такое команда?

Я вставил кусок кода, и мне нужно отформатировать / выровнять его ... очевидно, я неофит vi.

х

Ответы [ 3 ]

45 голосов
/ 16 апреля 2010

Эти команды в моем ответе работают в vim.Большинство людей, которые думают, что используют vi, используют vim.Чтобы узнать, действительно ли ваш 'vi' является 'vim', откройте vi и введите :version - если это vim, он скажет так.В противном случае вы можете просто увидеть номер версии без названия программы.Кроме того, когда вы открываете vim в первый раз, вы обычно видите экран-заставку с надписью «VIM - VI iMproved» ...

Автоматический отступ

Чтобы включить автоиндентирование, убедитесь, что vim знает тип файла, который вы редактируете (обычно он автоматически определяет его по расширению имени файла, но может не определить его для некоторых типов файлов).Вы можете определить тип файла, используя меню для подсветки синтаксиса.Затем сделайте следующее:

:filetype indent on

Вы можете отключить автоиндентирование с помощью

:filetype indent off

Автоматически корректировать / корректировать отступ

В общем, = {движение} будет выравнивать код по уровню отступа.

  • == выравнивать текущую строку
  • =i{ выровнять внутренний блок
  • =% выровнять по соответствующей скобке / скобке под курсором
  • =14j или 14== выровнять следующие 14 строк
  • =G выровнять по концу файла
  • vG= тоже самое, выровнять по концу файла (но в визуальном режиме)
  • vjjj= выровнять четыре строки (в визуальном режиме)

Ручной отступ

Если vim неправильно угадывает уровень отступа, его можно изменить двумя способами:

  • Если вы находитесь внормальный режим (где все команды), выполните << для смещения строки влево или >> для смещения вправо на одну вкладку.Вы можете сделать это с несколькими строками, используя те же команды перемещения, которые я показывал выше (например, >i{ отступает текущий внутренний блок кода).
  • Если вы находитесь в режиме вставки, выможно отступить строку дальше (без перемещения курсора), выполнив Ctrl-T или отменить одну вкладку с помощью Ctrl-D

Выравнивание знаков равенства и т. Д.

Если вы хотите выровнять знаки равенства в списке объявлений, вам следует рассмотреть возможность использования этого сценария vim: http://www.vim.org/scripts/script.php?script_id=294

Настройкаразмеры отступов / табуляции

Если вы хотите, чтобы vim использовал отступы вместо табуляции при отступе, запустите эту команду (или рассмотрите возможность добавления ее в файл vimrc)

 :set expandtab

Вустановить количество пробелов, равное табуляции, я обычно делаю это:

 :set expandtab softtabstop=3 tabstop=3 shiftwidth=3
  • tabstop - сколько колонок для табуляции имеет значение (влияет на отображение существующих символов табуляции)
  • shiftwidth -управляет размером повторного отступа с помощью << и >>, среди других команд.
  • softtabstop- сколько места вставить при нажатии клавиши табуляции
  • expandtab - развернуть клавиши табуляции до пробелов

Но если вам приходится много работать с разным количеством вкладок, вы можететакже используйте эту функцию и привязку клавиш:

function! Ktabs(tabsize)
    execute "set softtabstop=" . a:tabsize . " tabstop=" . a:tabsize . " expandtab shiftwidth=" . a:tabsize
    "set softtabstop=a:tabsize tabstop=a:tabsize expandtab shiftwidth=a:tabsize
endfunction
noremap <leader><Tab> :call Ktabs(3)<Left>

Если вы редактируете файл со смесью вкладок и пробелов, вы можете использовать эту команду после установки размера вкладки:

:retab
5 голосов
/ 06 апреля 2010

={motion}

:h =

P.S. Вы не должны использовать vi, если vim доступен.

4 голосов
/ 06 апреля 2010

Если вручную настроить отступы, я открою визуальный блок с V в первой или последней строке, которую я хочу сделать заново, переместимся на фигурную скобку, содержащую блок, перейдем к другой фигурной скобке с помощью %, затем сдвинем строку с > или <

Если отступы сильно отключены, я сместу все до конца с помощью < и повторю с ., а затем заново сделаю отступ.

Другое решение состоит в том, чтобы использовать команду unix fmt, как описано в Ваша проблема с Vim заключается в том, что вы не вздрагиваете vi. , {!}fmt

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...