2016-06-22 1 views
2

По какой-то причине команда set expandtab в моем файлах не имеет никакого эффекта.set expandtab in .vimrc не вступает в силу

Вот мой .vimrc:

" tab settings 
set expandtab 
set smarttab 
set softtabstop=2 
set tabstop=2 
set shiftwidth=2 
set paste 

Однако, когда я запустить vi (без имени файла) команда :set выдает:

:set 
--- Options --- 
    helplang=en   shiftwidth=2  ttyfast 
    paste    tabstop=2   ttymouse=xterm2 
    fileencodings=ucs-bom,utf-8,default,latin1 

, который указывает на то, что вариант expandtab не установлен. Это подтверждается также выполнением :set expandtab?, который возвращается с noexpandtab.

Я на OSX 10.10, а vi --help возвращается:

$ vi --version 
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Jun 20 2016 11:11:25) 
MacOS X (unix) version 
Included patches: 1-1847 
Compiled by Homebrew 

Почему некоторые параметры в моем .vimrc отмечаемых, но не set expandtab?

+0

Что происходит, когда вы используете команду ': set expandtab' в vim? Могут быть некоторые плагины, переопределяющие параметр expandtab –

+0

Он работает, если после запуска я запускаю ': set expandtab', но то, что я написал, это весь мой файл' .vimrc', и я не указал ни одного имени файла, поэтому я сомневаюсь, что плагины запускаются. – ErikR

+6

Прочтите ': help paste'. В более общем плане, не помещайте ничего в свой 'vimrc', который вы не полностью понимаете. – romainl

ответ

17

Из документации на expandtab:

Этот параметр сбрасывается при paste опция установлена, и восстанавливается, когда параметр paste сбрасывается.

Кстати, вы, вероятно, не хотите, чтобы paste был установлен все время. Это обычно используется для вставки в терминале Vim, чтобы избежать портя отступы и т.д.

Чтобы удобно включить paste и выключается одним нажатием клавиши вы можете добавить ярлык (изменить <F2> к любой ключ, который вы хотите):

+1

Может захотеть заглянуть в [скотч-вставить] (https://github.com/ConradIrwin/vim-bracketed-paste), чтобы избежать этой проблемы. [Unimpaired.vim] (https://github.com/tpope/vim-unimpaired) также предоставляет команды 'yo' /' yO' для временной установки '' paste''. –

+0

'set paste' в' ~/.vimrc'override 'set expandtab' – firelyu

Смежные вопросы