Самый быстрый способ вернуть пробелы в TAB в VIM - PullRequest
37 голосов
/ 25 января 2012

Я всегда был одним из тех, кто заменял TAB в VIM на x пробелов (обычно 4). Четыре строки, которые я почти всегда использую в своем конфигурационном файле .vimrc:

set tabstop=4 

set shiftwidth=4

set expandtab

syntax on

По сути, бывают моменты, когда мне НУЖНО использовать одну TAB (например, Makefiles), и я не знаю, как еще обойти это, кроме как оставить файл, отредактировать мой .vimrc, а затем перезагрузить файл интерес.

Тем не менее, какой самый быстрый способ (из VIM) вернуть его обратно к использованию TABS, а затем вернуться к моим первоначальным настройкам? Я ищу решение с наименьшими хлопотами и минимальными нажатиями клавиш.

Ответы [ 5 ]

47 голосов
/ 25 января 2012

VIM автоматически включит TAB для make-файла, если вы назовете его «make-файлом», а не «Makefile».Не уверен, почему VIM до сих пор не определяет тип с разницей в верхнем регистре, но такова жизнь.(@Sedrik)

Кроме этого, существуют другие альтернативные решения:

Привязка типов файлов (@ThorstenS @tungd):

autocmd FileType make setlocal noexpandtab

Переключатель RealTime (@ThorstenS):

Предполагая конфигурацию .vimrc, упомянутую в вопросе, выполните:

:set noet (чтобы переключиться с пробелов наTAB)

и :set et (для переключения назад)

21 голосов
/ 14 марта 2013

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

На * NIX по умолчанию это ^ V, когда вы находитесь в режиме вставки.В Windows вам нужно выяснить, что такое магический escape-символ - ^ V используется для чего-то другого;Я думаю, что это может быть ^ Q или ^ S?

Итак!В вашем make-файле:

this: this.c
<C-V><Tab>cc this.c

, где применяются обычные значения:

означает нажатие Ctrl-V (вы должны увидеть ^, прячущийся под курсором) - нажмите клавишу Tab.Бинго.

Работает для меня.

Примечание: если вы используете настройки vim или код запуска, который ломает вкладки при чтении файла, это, очевидно, является краткосрочным исправлением.Я предпочитаю узнать, как использовать команду retab, чтобы убедиться, что файл является чистым от табуляции, потому что мне не нравится, когда к файлу нужно прикасаться, если я сознательно не решу это сделать.

11 голосов
/ 25 января 2012

Просто введите set noexpandtab.Возможно, вы связываете это с функциональной клавишей.

0 голосов
/ 16 мая 2019

Только эта конфигурация помогла мне решить эту проблему.

filetype plugin indent on
filetype detect
autocmd FileType make set noexpandtab
0 голосов
/ 28 ноября 2017

Vim по умолчанию tabstop=8 и noexpandtab, поэтому по умолчанию хорошо подходят для работы с Make-файлами.Если ваш .vimrc использует пользовательские опции для tabstop, expandtab и т. Д., Одно простое решение - обойти ваш .vimrc при работе с Makefiles.

С man-страницы (выделено мной):

-u {vimrc} Используйте команды в файле {vimrc} для инициализации.Все остальные инициализации пропускаются.Используйте это, чтобы редактировать особый вид файлов. Его также можно использовать для пропуска всех инициализаций, указав имя «NONE» .Смотрите ": инициализация справки" в vim для более подробной информации.

Поскольку я никогда не могу вспомнить необходимый флаг / значение / форматирование, я создал псевдоним Bash, который запоминается для меня: alias vimnone='vim -u NONE'

...