Замените табуляцию пробелами в vim - PullRequest
331 голосов
/ 09 января 2009

Я хотел бы преобразовать табуляцию в пробелы в gVim. Я добавил следующую строку к своему _vimrc:

set tabstop=2

Он работает, чтобы останавливаться на двух пробелах, но все равно выглядит, как будто вставлена ​​одна клавиша табуляции (я пытался использовать клавишу h для подсчета пробелов впоследствии).

Я не уверен, что мне делать, чтобы gVim преобразовывал табуляцию в пробелы?

Ответы [ 11 ]

780 голосов
/ 09 января 2009

После того, как вы получили расширение в соответствии с другими ответами, чрезвычайно удобный способ конвертировать существующие файлы в соответствии с вашими новыми настройками:

:retab

Будет работать с текущим буфером.

353 голосов
/ 09 января 2009

IIRC, что-то вроде:

set tabstop=2 shiftwidth=2 expandtab

должен сделать свое дело. Если у вас уже есть вкладки, добавьте к ним хороший глобальный RE, заменив их двойными пробелами.

101 голосов
/ 09 января 2009

Попробуйте

set expandtab

для мягких вкладок.

Чтобы исправить уже существующие вкладки:

:%s/\t/  /g

Я использовал два пробела, поскольку вы уже установили табуляцию на 2 пробела.

50 голосов
/ 14 октября 2016

Это сработало для меня:

вы можете увидеть вкладки, сначала сделав это:

:set list

затем, чтобы можно было заменить вкладки, выполните следующее:

:set expandtab

тогда

:retab

теперь все вкладки заменены пробелами затем вы можете вернуться к обычному просмотру следующим образом:

:set nolist
39 голосов
/ 06 сентября 2013

gg=G переопределяет весь файл и удаляет большинство, если не все вкладки, которые я получаю в файлах от коллег.

38 голосов
/ 19 января 2010

Добавьте следующие строки в ваш .vimrc

set expandtab
set tabstop=4
set shiftwidth=4
map <F2> :retab <CR> :wq! <CR>

Откройте файл в vim и нажмите F2 Вкладки будут преобразованы в 4 пробела, и файл будет сохранен автоматически.

13 голосов
/ 12 февраля 2009

Если вы хотите, чтобы ваш \t был равен 8 пробелам, рассмотрите возможность установки:

   set softtabstop=2 tabstop=8 shiftwidth=2

Это даст вам два пробела за <TAB> нажатие, но фактический \t в вашем коде будет по-прежнему рассматриваться как 8 символов.

3 голосов
/ 28 марта 2013

первый поиск вкладок в вашем файле: / ^ I установить settab : Retab

будет работать.

2 голосов
/ 13 декабря 2018

Это заставило меня работать:

:set tabstop=2 shiftwidth=2 expandtab | retab
2 голосов
/ 25 марта 2018

expand - это утилита Unix для преобразования табуляции в пробелы. Если вы не хотите set что-либо в vim, вы можете использовать команду оболочки из vim:

:!% expand -t8
...