изменение табуляции с 4 на 2 после использования expandtab (с минимальными ручными усилиями)

Некоторое время я использовал tabstop=4 в своих исходных файлах. Теперь, когда я пишу много javascript с глубокими отступами, табуляция 4 кажется расточительной, поэтому я хочу преобразовать ее в 2. Проблема в том, что я также использую «set expandtab». Так что простая установка tabstop=2 не поможет.

Любые предложения о том, как я могу быстро преобразовать все мои файлы в tabstop 2?

Мои текущие соответствующие настройки .vimrc:

set tabstop=4
set shiftwidth=4
set expandtab

person Jayesh    schedule 19.08.2010    source источник


Ответы (2)


Ты можешь сделать

" convert spaces to tabs first
set noexpandtab
set tabstop=4
set shiftwidth=4
retab!
" now you have tabs instead of spaces, so insert spaces according to
" your new preference
set tabstop=2
set shiftwidth=2
set expandtab
retab!

в окне vim, и вкладка будет изменена в соответствии с вашими предпочтениями. Вероятно, вы можете создать сопоставление, чтобы упростить эту задачу, или записать макрос. Может быть и другой способ, но описанный выше должен работать. (" это комментарий)

person Alok Singhal    schedule 19.08.2010

Вы можете изменить свои настройки, выбрать все и нажать клавишу =, чтобы сделать отступ:

ggVG=

Я также рекомендую использовать ftplugin для указания настроек для каждого типа файла.

person Merlyn Morgan-Graham    schedule 19.08.2010
comment
Я знал, что есть простой способ! - person Alok Singhal; 19.08.2010
comment
@Alok: Вы все равно можете оставить свой ответ. Глядя на документы VIM, это может принципиально отличаться от применения отступа. Я думаю, он должен попробовать оба, чтобы узнать. - person Merlyn Morgan-Graham; 19.08.2010
comment
Ну, ваш метод переустанавливает все, что, как вы сказали, отличается от сохранения намерения отступа уже в коде. Хороший вопрос, я восстановлю свой ответ. - person Alok Singhal; 19.08.2010
comment
Я пробовал это, это уменьшает отступ, но это работает не совсем правильно. Я думаю, что он пересчитывает отступы, а не только меняет существующие вкладки. - person Jayesh; 19.08.2010
comment
@Jayesh: Это именно то, что делает =: изменяет отступ в соответствии с вашими настройками; см. :help =. - person ; 19.08.2010