Как префикс/выровнять/форматировать код в vi? Что такое команда?
Я вставил в кусок кода, и мне нужно, чтобы все было отформатировано/выровнено... очевидно, что я - неофит.
х
Как префикс/выровнять/форматировать код в vi? Что такое команда?
Я вставил в кусок кода, и мне нужно, чтобы все было отформатировано/выровнено... очевидно, что я - неофит.
х
Эти команды в моем ответе работают в 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{
отступы текущего внутреннего блока кода).Выравнивание знаков равенства и т.д.
Если вы хотите выровнять знаки равенства в списке объявлений, вам следует использовать этот vim script: http://www.vim.org/scripts/script.php?script_id=294
Настройка размеров отступов/вкладок
Если вы хотите, чтобы vim использовал пробелы вместо вкладок, когда они отступают, запустите эту команду (или добавьте ее в файл vimrc).
:set expandtab
Чтобы установить, сколько пробелов равно табуляции, я обычно делаю это:
:set expandtab softtabstop=3 tabstop=3 shiftwidth=3
Но если вам нужно много работать с разными количествами вкладок, вы также можете использовать эту функцию и привязку клавиш:
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
={motion}
:h =
P.S. Вы не должны использовать vi, если vim доступен.
Если вручную отрегулировать отступы, я открою визуальный блок с V
в первой или последней строке, которую я хочу переставить, перейдите к фигурной скобке, содержащей блок, перейдите к другой фигурной скобке с помощью %
, затем сдвиньте строку с >
или <
Если отступы отключены по большому счету, я сдвигу все, оставшееся с помощью <
, и повторю его с помощью .
, а затем снова отступят все.
Другим решением является использование команды unix fmt
, как описано в Ваша проблема с Vim заключается в том, что вы не пытаетесь выполнить vi., {!}fmt