В Vim, какая команда исправить отступы всех строк?
Часто я копирую и вставляю код в удаленный терминал и все испортил. Я хочу исправить это одним махом.
В Vim, какая команда исправить отступы всех строк?
Часто я копирую и вставляю код в удаленный терминал и все испортил. Я хочу исправить это одним махом.
=
команда indent может принимать движения. Итак, gg
, чтобы получить начало файла, =
в отступ, G
в конец файла, gg=G
.
Перед тем, как вставить в терминал, попробуйте :set paste
(а затем :set nopaste
после того, как вы закончите). Это отключит функции автоиндекса, строки и т.д., Которые испортят вашу пасту.
edit: Кроме того, я должен указать, что гораздо лучший результат, чем = отступы, обычно можно получить с помощью внешней программы. Например, я запускаю :%!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-autoformat форматирует исходные файлы, используя внешние программы, специфичные для вашего языка, например. rbeautify "для файлов Ruby, js-beautify" пакет npm для JavaScript.
Для сложных файлов С++ vim не всегда получает форматирование при использовании команды vim =
filter. Поэтому для таких ситуаций лучше использовать внешний форматировщик С++, например astyle (или uncrustify), например:
:%!astyle
Функция Vim '=' по умолчанию использует свой внутренний форматтер (что не всегда получается правильно), но можно также установить для него внешний форматтер, например астайл, соответствующим образом настроив его, как описано в этот вопрос.
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)
Для редактора vi используйте: insert. Это сохранит все ваши форматирование и не будет вставлять auto-indenting. После этого нажмите escape, чтобы просмотреть фактический отформатированный файл, иначе вы увидите некоторые символы мусора. как ^ I например:
public static void main(String[] args) {
^I
^I System.out.println("Some Garbage printed upon using :insert");
}
Вы можете создать сопоставление, чтобы сделать это для вас.
Это будет автоматически отступать весь файл и по-прежнему держать курсор в том положении, которое вы:
nmap <leader>ai mzgg=G`z
Просто перейдите в визуальный режим в vim и выберите из строки вверху вниз после выбора только нажмите =, вся выбранная строка будет отступом.