Я пытаюсь изменить вкладки на вкладки шириной с 2 интервалами вместо ширины по умолчанию с 4 интервалами.

Мой файл vimrc выглядит так:

" Configuration file for vim
set modelines=0   " CVE-2007-2438
" Normally we use vim-extensions. If you want true vi-compatibility
" remove change the following statements
set expandtab
set backspace=2   " more powerful backspacing
set tabstop=2
set softtabstop=2
set shiftwidth=2
map <C-c> "+y<CR>

" Don't write backup file if vim is being called by "crontab -e"
au BufWrite /private/tmp/crontab.* set nowritebackup nobackup
" Don't write backup file if vim is being called by "chpass"
au BufWrite /private/etc/pw.* set nowritebackup nobackup

let skip_defaults_vim=1

Даже после того, как я изменил настройки, мои существующие файлы не имеют вкладок с двумя пробелами. Если я добавлю :set expandtab и :set stoptab=2 для моих файлов, это разрешит вкладки с интервалом 2 для этого сеанса, но после сохранения, выхода и повторного открытия файла все выглядит как вкладка с 4 интервалами.

Очевидно, я не эксперт Vim. Как сделать так, чтобы vim всегда использовал 2 пробела и чтобы этот параметр сохранялся во всех сеансах?

1 ответ1

0

Если внутри ваших файлов редактирования есть физические вкладки, вы действительно можете изменить внешний вид ширины вкладок, изменив значение параметра 'tabstop' . Внутри текста вкладки останутся прежними.

Однако, как вы установили :set expandtab , внутри ваших файлов не должно быть никаких вкладок (если они были последовательно отредактированы), и любые ваши изменения будут вставлять соответствующее количество пробелов при каждом нажатии Tab. Это приводит к поведению, о котором вы сообщаете: новые правки будут вставлять 2 пробела для каждой вкладки, но существующие строки сохранят отступ в 4 пробела.

Если вы хотите изменить ширину отступа при использовании пробелов, вы должны физически изменить количество пробелов; например, уменьшить 4 пробела до 2. Vim предлагает команду :retab (:help change-tabs), но ее использование с отступом на основе пробелов является громоздким, а также влияет на любые пробелы, а не только на отступ в начале строки. Это проще в использовании :substitute это. Следующая команда делит пополам количество пробелов в начале строк:

:%substitute/^\( \+\)\1/\1/e

TL; DR: Имея физические вкладки внутри текста, вы можете изменить внешний вид с помощью значения 'tabstop' , с физическими пробелами вы должны преобразовать количество пробелов внутри текста.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .