Как заставить vi - Vim никогда не использовать вкладки (плохо переводить пробелы в табуляции!), Делать клавишу табуляции == 4 пробела и автоматически вставлять код после блоков фигурных скобок, как это делает Emacs ?
Кроме того, как мне сохранить эти настройки, чтобы мне больше никогда не приходилось их вводить?
Я видел другие вопросы, связанные с этим, но всегда кажется, что это немного отличается от того, что я хочу.
vim
whitespace
indentation
vi
auto-indent
mmcdole
источник
источник
Ответы:
Как было указано в нескольких ответах ниже, предпочтительным методом сейчас НЕ является использование smartindent, но вместо этого используйте следующее (в вашем .vimrc ):
В вашем .vimrc: file:К файлам справки нужно немного времени, чтобы привыкнуть, но чем больше вы читаете, тем лучше становится Vim:
Более того, вы можете встроить эти параметры в ваш источник для переносимости:
Чтобы увидеть ваши текущие настройки:
Как отмечает Graywh в комментариях, smartindent был заменен на cindent, который «работает более умно», хотя по-прежнему в основном для языков с C-подобным синтаксисом:
источник
Связано, если вы открываете файл, который использует табуляции и пробелы, при условии, что у вас есть
Вы можете заменить все вкладки пробелами во всем файле с помощью
источник
Лучший способ получить специфичный для типа файла отступ - это использовать
filetype plugin indent on
в вашем vimrc. Затем вы можете указать такие вещи, как, например,set sw=4 sts=4 et
в .vim / ftplugin / c.vim, без необходимости делать их глобальными для всех редактируемых файлов, и другие синтаксисы не-C-типа также будут корректно сдаваться (даже шутки) .источник
Чтобы иметь в большинстве файлов вкладки по 4 пробела, настоящий символ табуляции шириной 8 в файлах Makefile и автоматическое отступление в различных файлах, включая C / C ++, поместите это в свой
~/.vimrc
файл:источник
else
? Мне кажется, что последние строки перезаписывают специфичные для make-файла во всех случаяхВо многих системах Linux, таких как Ubuntu,
.vimrc
файл не существует по умолчанию, поэтому рекомендуется сначала создать его.Не используйте
.viminfo
файл, который существует в домашнем каталоге. Он используется для другой цели.Шаг 1: Зайдите в свой домашний каталог
cd ~
Шаг 2. Создайте файл
vim .vimrc
Шаг 3: Добавьте указанную выше конфигурацию
Шаг 3: Сохраните файл, нажав Shift+ ZZ.
источник
Shift + ZZ
это создаст .swp файл. использоватьwq
.Ctrl-Z
это другая история ...)vim -n <file>
. Файл подкачки - это не то, что генерируется во время сохранения; это в значительной степени нарушило бы его назначение, поскольку файлы подкачки становятся полезными для восстановления внезапно прерванных сеансов редактирования.Рекомендуемый способ - использовать отступы на основе типов файлов и использовать smartindent и cindent, только если этого недостаточно.
Добавьте следующее в ваш .vimrc
Надеюсь, это поможет, потому что это другой ответ.
источник
отредактируйте ваш ~ / .vimrc
добавьте следующие строки:
источник
Из вики VIM :
источник
Авто-отступ основан на текущем режиме синтаксиса. Я знаю , что если вы редактируете Foo.java, а затем вступает в
{
и ударе Enterотступов следующей строки.Что касается вкладок, есть две настройки. В Vim введите двоеточие, а затем «set tabstop = 4», в результате чего вкладки будут отображаться в виде четырех пробелов. Снова нажмите «двоеточие» и введите «set expandtab», чтобы вставить пробелы для вкладок.
Вы можете поместить эти настройки в .vimrc (или _vimrc в Windows) в вашем домашнем каталоге, так что вам нужно будет ввести их только один раз.
источник
Во-первых, не используйте Tabключ в Vim для ручного отступа. Vim имеет пару команд в режиме вставки для ручного увеличения или уменьшения величины отступа. Эти команды Ctrl-Tи Ctrl-D. Эти команды соблюдать значения
tabstop
,shiftwidth
иexpandtab
, и поддерживать правильную смесь пространств и вкладок (максимальное количество вкладок с последующим любым необходимым числом пробелов).Во-вторых, эти ручные отступы в любом случае не нужно использовать очень часто, если вы используете автоматический отступ.
Если Ctrl-Tвместо того, чтобы Tabбеспокоить вас, вы можете переназначить его:
Вы также можете переназначить, Shift-Tabчтобы сделать Ctrl-Ddeindent:
Здесь ^ T и ^ D - буквенные управляющие символы, которые можно вставить как Ctrl-VCtrl-T.
Имея это отображение, вы все равно можете набрать литеральную Tab в буфер, используя Ctrl-VTab. Обратите внимание, что если вы сделаете это, даже если
:set expandtab
он включен, вы получите нерасширенный символ табуляции.Эффект, аналогичный
<Tab>
карте, достигается при использовании:set smarttab
, которое также заставляет backspace в передней части линии вести себя умно.В
smarttab
режиме, когда Tabиспользуется не в начале строки, это не имеет особого значения. Это отличается от моего выше отображения Tabк Ctrl-T, так как Ctrl-Tиспользуемый в любой точке линии (в режиме вставки) увеличит отступ этой линии.Другие полезные сопоставления могут быть:
Теперь мы можем делать такие вещи, как выделение строк и нажимать, Tabчтобы отступать над ними. Или Tabдважды нажмите на строку (в командном режиме), чтобы увеличить отступ.
Если вы используете правильные команды управления отступы, то все контролируется тремя параметрами:
shiftwidth
,tabstop
иexpandtab
.shiftwidth
Параметр контролирует размер отступа; если вы хотите четыре пробела, используйте:set shiftwidth=4
или сокращение:set sw=4
.Если только это будет сделано, отступ будет создан с использованием комбинации пробелов и табуляций, потому что
noexpandtab
это значение по умолчанию. Использование:set expandtab
. Это приводит к тому, что символы табуляции, которые вы вводите в буфер, расширяются в пробелы, а для отступа, управляемого Vim, используются только пробелы.Когда
expandtab
включено, и если вы управляете своим отступом через все надлежащие механизмы Vim, значениеtabstop
становится неактуальным. Он контролирует, как появляются вкладки, если они появляются в файле. Если у вас есть,set tabstop=8 expandtab
а затем вставьте жесткую вкладку в файл с помощью Ctrl-VTab, он, как обычно, произведет выравнивание по следующей позиции табуляции на 8 столбцов.источник
<C-t>
может использовать этот синтаксис, а не литералы. Наконец, отображение<Tab>
в обычном режиме также будет отображаться<C-i>
(они одного и того же символа), поэтому я не рекомендую этого (вы теряете изящную функциональность vim