Подтвердить что ты не робот

Самый быстрый способ возврата пространств в TAB в VIM

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

set tabstop=4 

set shiftwidth=4

set expandtab

syntax on

В принципе, есть моменты, когда мне НЕОБХОДИМО использовать одну TAB (например, Make файлы), и я не знаю, как еще обойти это, помимо оставления файла, редактирования моего .vimrc, а затем перезагрузки файла.

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

4b9b3361

Ответ 1

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

В стороне, другие альтернативные решения:

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

autocmd FileType make setlocal noexpandtab

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

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

:set noet (для переключения из пробелов в TAB)

и :set et (для возврата)

Ответ 2

Просто используйте волшебную клавишу эвакуации, доступную в режиме вставки.

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

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

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

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

означает hit ctrl-V (вы должны видеть, что ^ скрывается под курсором)  - нажмите клавишу табуляции. Бинго.

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

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

Ответ 3

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

Ответ 4

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

Из man-страницы (акцент мой):

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

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

Ответ 5

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

filetype plugin indent on
filetype detect
autocmd FileType make set noexpandtab