Как исправить отступы всего файла в Vi? - PullRequest
600 голосов
/ 03 февраля 2009

В Vim, какая команда исправляет отступ всех строк?

Часто я копирую и вставляю код в удаленный терминал, и все перепутано. Я хочу исправить это одним махом.

Ответы [ 17 ]

1147 голосов
/ 03 февраля 2009

=, команда indent может делать движения. Так, gg чтобы получить начало файла, = для отступа, G до конца файла, gg=G.

120 голосов
/ 03 февраля 2009

Перед вставкой в ​​терминал, попробуйте :set paste (а затем :set nopaste после того, как вы закончите). Это отключит функции автоматического отступа, переноса строк и т. Д., Которые портят вашу пасту.

edit: Кроме того, я должен отметить, что гораздо лучший результат, чем = indenting, обычно можно получить с помощью внешней программы. Например, я запускаю :%!perltidy все время. astyle, cindent и т. д. также могут быть использованы. И, конечно, вы можете сопоставить их с одним нажатием клавиши - и сопоставить разные с одним и тем же нажатием клавиши в зависимости от типа файла

29 голосов
/ 02 марта 2011

Если вы хотите перерисовать блок, в котором находитесь, без необходимости вводить аккорды, вы можете сделать:

[[=]]
24 голосов
/ 31 августа 2015

Мастер всех команд

gg=G

Это отступ для всего файла!

И ниже приведены некоторые простые и элегантные команды, используемые для быстрого отступа строк в Vim или gVim.

Чтобы сделать отступ для всех строк под текущей строкой

=G

Для отступа текущей строки

==

Для отступа n строк ниже текущей строки

n==

Например, чтобы сделать отступ на 4 строки ниже текущей строки

4==

Чтобы сделать отступ для блока кода, перейдите к одной из фигурных скобок и используйте команду

=%
17 голосов
/ 06 июля 2009

Вы можете использовать аккуратное приложение / утилиту для отступа файлов HTML и XML, и это отлично работает при отступе этих файлов.

Prettify XML-файл

:!tidy -mi -xml %

Предварительный просмотр файла HTML

:!tidy -mi -html %
14 голосов
/ 02 декабря 2014

нажмите escape и быстро наберите следующие комбинации:

gg=G
11 голосов
/ 04 февраля 2009

1G=G. Это должно сделать отступ для всех строк в файле. 1G займет первую строку, = запустит авто-отступ, а последний G займет последнюю строку в файле.

7 голосов
/ 04 февраля 2009

:set paste ваш друг, я использую шпаклевку и в итоге копирую код между окнами. До того, как я включил :set paste:set nopaste), копирование / вставка приводило меня в чувство именно по этой причине.

7 голосов
/ 03 февраля 2009

В Vim используйте :insert. Это сохранит все ваше форматирование и не сделает автоиндентирование. Для получения дополнительной информации help :insert.

6 голосов
/ 22 декабря 2009

Если вы не хотите использовать :set paste, средний щелчок, set nopaste, вы также можете вставить содержимое буфера обмена:

"*p
"+p

Таким образом, вам не нужно выходить из нормального режима. если вам нужно вставить + или *, зависит от того, как вы выбрали текст, см. :help quoteplus.

...