Подтвердить что ты не робот

Как выравнивать код (фигурные скобки, parens и т.д.) В vi?

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

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

х

4b9b3361

Ответ 1

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

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

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

:filetype indent on

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

:filetype indent off

Автоматическая настройка/исправление отступа

В общем случае = {motion} выровняет код с уровнем отступов.

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

Ручное отступы

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

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

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

Если вы хотите выровнять знаки равенства в списке объявлений, вам следует использовать этот vim script: 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

Ответ 2

={motion}

:h =

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

Ответ 3

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

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

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