Есть ли способ автоматически распаковать все в исходном файле с помощью команды? [закрыто]

11

И затем автоматически повторно сделать отступ после этого? Я пытался скопировать код с одного экрана терминала на другой, но табуляция все испортила.

Я не знал, как назвать эту функцию, поэтому мне было трудно найти ее в Google (который обычно возвращал вещи, связанные с тем, как установить размер вкладки, а это, к сожалению, было не то, что я искал).

Темный тамплиер
источник
1
Я голосую, чтобы закрыть этот вопрос как не по теме, потому что речь идет об инструменте программирования. Вопросы об инструментах лучше подходит для StackOverflow , или в данном случае, Vi.SE . Однако этот вопрос слишком стар для миграции.
1
Я голосую , чтобы закрыть этот вопрос не по теме , поскольку речь идет об использовании определенного инструмента и должен был задан на переполнение стека или (если спрошено сейчас) vi.se .

Ответы:

9

В Vim есть retabкоманда, которая позволяет вам табулировать или удалять ваши документы. Он использует настройки, такие как tabstopи expandtab. Итак, если вы хотите заменить вкладки пробелами, вы можете сделать следующее:

:%retab

Смотрите retabдокументацию для получения полной информации.

Caveat Emptor : это также заменяет вкладки, которые НЕ находятся в начале строки. Так что если вы используете жесткие вкладки в середине строк, они также будут заменены.

Калеб Педерсон
источник
3
В общем, все равно считается плохой идеей включать в строку настоящую вкладку. Это все еще может случиться, но \tпредпочтительнее, просто чтобы избежать подобных проблем.
Спенсер Рэтбун
6

Чтобы расширить ответ @ Kaleb (у меня пока нет комментариев), перед выполнением команды retab вам потребуется :set expandtab (set et). В противном случае вкладка не будет заменять вкладки пробелами.

Кроме того, вы можете указать вкладки. Зачастую в исходном коде, созданном другими, код пишется с установками табуляции 4 или даже 2. Прежде чем выполнять :%retabкоманду, поэкспериментируйте с различными закладками. Пытаться

:set ts=8 (the default)
:set ts=4 
:set ts=2  

чтобы увидеть, какая настройка имеет больше смысла.

Чтобы вернуться назад (заменив пробелы соответствующими символами табуляции, используйте

:set noet
:%retab!
Firstrock
источник
1

Под un-tab вы хотите заменить табуляцию пробелами? Если это так, замените пробелы для вкладок во всем буфере следующим образом:

:%s/^I/    /g

Это четыре пробела с правой стороны от подстановки, но вы можете сделать это как угодно. Чтобы получить буквенный ^Iсимвол табуляции, вы можете нажать ^Vклавишу «Tab».

Вы можете сделать отступ с помощью =команды. Чтобы заново создать отступ для всего содержимого буфера, используйте эти команды:

gg
=G

Это приведет вас к вершине, а затем все отступит вниз.

boshvark
источник
-1: замена табуляции с фиксированным количеством пробелов практически никогда не бывает полезной. Это изменит внешний вид любой строки, содержащей вкладку, которой предшествует не вкладка.
Кевин Клайн