Как исправить отступ всего файла в Vi?
-
21-08-2019 - |
Вопрос
В Vim какая команда исправляет отступы всех строк?
Часто я копирую и вставляю код в удаленный терминал, и все портится.Я хочу исправить это одним махом.
Решение
=
, команда отступа может выполнять движения.Так, gg
чтобы получить начало файла, =
сделать отступ, G
до конца файла, gg=G
.
Другие советы
Прежде чем вставлять в терминал, попробуйте :set paste
(а потом :set nopaste
после того, как вы закончите).Это отключит автоматический отступ, перенос строк и т. д.функции, которые портят вашу пасту.
редактировать:Также я должен отметить, что гораздо лучший результат, чем отступ =, обычно можно получить, используя внешнюю программу.Например, я бегаю :%!perltidy
все время.астиль, циндент и т. д.также можно использовать.И, конечно же, вы можете сопоставить их с нажатием клавиши — и сопоставить разные клавиши с одним и тем же нажатием клавиши в зависимости от типа файла.
Если вы хотите изменить отступ блока, в котором находитесь, без необходимости вводить аккорды, вы можете сделать:
[[=]]
Мастер всех команд
gg=G
Это отступы для всего файла!
Ниже приведены некоторые простые и элегантные команды, используемые для быстрого отступа строк в Vim или gVim.
Чтобы сделать отступ для всех строк ниже текущей строки
=G
Чтобы отступить текущую строку
==
Чтобы сделать отступ n
строки ниже текущей строки
n==
Например, чтобы сделать отступ на 4 строки ниже текущей строки.
4==
Чтобы сделать отступ для блока кода, перейдите к одной из фигурных скобок и используйте команду
=%
Вы можете использовать аккуратное приложение/утилиту для создания отступов в файлах HTML и XML, и оно очень хорошо работает при создании отступов в этих файлах.
Предварительное оформление XML-файла
:!tidy -mi -xml %
Предварительное оформление HTML-файла
:!tidy -mi -html %
нажмите escape, а затем быстро введите следующие комбинации:
gg=G
1G=G
.Это должно сделать отступы для всех строк в файле. 1G
берет вас на первую строчку, =
запустит автоматический отступ и финальный G
выведет вам последнюю строку в файле.
В Vim используйте :insert
.Это сохранит все ваше форматирование и не будет выполнять автоматические отступы.Для дополнительной информации help :insert
.
:set paste
твой друг, я использую шпатлевку и в конечном итоге копирую код между окнами.Прежде чем меня включили :set paste
(и :set nopaste
) Копирование/вставка вызвало у меня приступ именно по этой причине.
если вы не хотите использовать :set paste
, щелкните средней кнопкой мыши, set nopaste
, вы также можете вставить содержимое буфера обмена:
"*p
"+p
Таким образом, вам не придется выходить из обычного режима.если вам нужно вставить +
или *
зависит от того, как вы выделили текст, см. :help quoteplus
.
vim-автоформат форматирует исходные файлы с помощью внешних программ, специфичных для вашего языка, например.rbeautify» для файлов Ruby, пакет npm «js-beautify» для JavaScript.
Для сложных файлов C++ vim не всегда правильно форматирует файлы vim. =
команда фильтра.Поэтому в таких ситуациях лучше использовать внешний форматировщик C++, например стиль (или снимать корку) например:
:%!astyle
Функция Vim '=' по умолчанию использует свой внутренний форматтер (который не всегда работает правильно), но можно также настроить ее на использование внешнего форматтера, например astyle, настроив его соответствующим образом, как описано в разделе этот вопрос.
VI должен учитывать табуляции и пробелы, однако вы должны учитывать, что vi может использовать табуляции другой длины, чем другой ваш редактор.Можете ли вы сказать что-то более конкретное, чем «все напутано»?
Для файлов XML я использую эту команду
:1,$!xmllint --format --recover - 2>/dev/null
Вам необходимо установить xmllint (пакет libxml2-utils)
(Источник : http://ku1ik.com/2011/09/08/formatting-xml-in-vim-with-indent-command.html )
Вы можете создать сопоставление, которое сделает это за вас.
Этот автоматически сделает отступ для всего файла и при этом удержит курсор в том положении, в котором вы находитесь:
nmap <leader>ai mzgg=G`z
Просто перейдите в визуальный режим в vim и выберите строки сверху вниз после выбора, просто нажмите = . Все выбранные строки будут иметь отступ.
Для редактора vi используйте :insert.Это сохранит все ваше форматирование и не будет вставлять автоматические отступы. После этого нажмите escape, чтобы просмотреть фактически отформатированный файл, иначе вы увидите мусорные символы.Как ^я, например:
public static void main(String[] args) {
^I
^I System.out.println("Some Garbage printed upon using :insert");
}