Чи є спосіб автоматично скасувати вкладку всього у вихідному файлі за допомогою команди? [зачинено]


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). Інакше retab не замінить вкладки пробілами.

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

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

побачити, яке налаштування має найбільш сенс.

Щоб повернутися назад (замінивши пробіли відповідними символами TAB, використовуйте

:set noet
:%retab!

1

Відміняючи вкладку, ви хочете змінити вкладки на пробіли? Якщо так, замініть пробіли для вкладок у всьому буфері так:

:%s/^I/    /g

Це чотири пробіли з правого боку підстановки, але ви можете зробити його будь-якою кількістю. Щоб отримати буквальний ^Iсимвол вкладки, ви можете натиснути ^Vклавішу Tab.

Ви можете повторно відкласти =команду. Для повторного відступу всього вмісту буфера використовуйте ці команди:

gg
=G

Це відведе вас до верху, а потім повторно відступить усе до низу.


-1: Заміна вкладки фіксованою кількістю пробілів майже ніколи не корисна. Це змінить зовнішній вигляд будь-якого рядка, що містить вкладку, передуючи якій не є вкладка.
кевін клайн
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.