У Vim, яка команда виправити відступ усіх рядків?
Часто я копіюю і вставляю код у віддалений термінал, і все це псується. Я хочу виправити це одним махом.
У Vim, яка команда виправити відступ усіх рядків?
Часто я копіюю і вставляю код у віддалений термінал, і все це псується. Я хочу виправити це одним махом.
Відповіді:
=
, команда відступу може приймати рухи. Таким чином, gg
щоб отримати початок файлу, =
для відступу, G
до кінця файлу, gg=G
.
''
(дві одиничні цитати) повертає вас туди, де ви були, gg=G''
слід відступити, а потім повернутися.
Перш ніж вставити в термінал, спробуйте, :set paste
а потім, :set nopaste
коли закінчите. Це вимкне автоматичний відступ, обертання рядків та інші функції, які псують вашу пасту.
редагувати: Також я повинен зазначити, що набагато кращий результат, ніж =
відступ, зазвичай можна отримати за допомогою зовнішньої програми. Наприклад, я :%!perltidy
весь час бігаю . astyle
, cindent
тощо можуть також використовуватися. І, звичайно, ви можете зіставити їх на штрих клавіш, а різні - на один і той же натискання клавіші, залежно від типу файлу.
equalprg
опцію у ftplugin використовувати зовнішній фільтр для =
відступу, а не спеціальне прив'язування клавіш.
formatpgm
з охайним та стильним, а потім gq
. Ось декілька прикладів з мого .vimrc
: au FileType xml set fp=tidy\ -q\ -i\ -xml
таau FileType java set fp=/usr/local/bin/astyle\ --mode=java\ --indent=tab
Якщо ви хочете повторно набрати блок, в якому ви не вводите жодні акорди, ви можете зробити:
[[=]]
=aB
який взагалі не перемістить курсор.
[[=]]
потрібно 5 акордів :(
Майстер всіх команд - це
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
візьме вам останній рядок у файлі.
1gg=G
У Vim використовуйте :insert
. Це дозволить зберегти все ваше форматування і не робити автопомирення. Для отримання додаткової інформації help :insert
.
vim-autoformat форматує вихідні файли за допомогою зовнішніх програм, специфічних для вашої мови, наприклад, дорогоцінний камінь "rbeautify" для файлів Ruby, "js-beautify" npm-пакет для JavaScript.
Для складних файлів C ++ vim не завжди отримує правильне форматування при використанні команди =
фільтра vim . Тож для таких ситуацій краще використовувати зовнішній формат C ++, наприклад astyle (або unrustfy ), наприклад:
:%!astyle
Функція '=' Vim за замовчуванням використовує свій внутрішній формат (який не завжди коригує все), але можна також встановити його за допомогою зовнішнього форматера, наприклад, astyle, встановивши його відповідним чином, як обговорювалося в цьому питанні .
Для 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
Для редактора vi використовуйте: вставте. Це дозволить зберегти все форматування і не вставити автоматичне відступ. Після завершення натисніть клавішу Escape, щоб переглянути фактично відформатований файл, інакше ви побачите деякі символи сміття. як я, наприклад:
public static void main(String[] args) {
^I
^I System.out.println("Some Garbage printed upon using :insert");
}
Просто перейдіть у візуальний режим in vim та виберіть від верхньої та нижньої ліній після вибору просто натисніть =, весь вибраний рядок буде з відступом.
ggvG=
коли можна gg=G
. Який сенс робив рух видимим? Це стосується всіх дій, які здійснюють рухи.