我在tmux中使用vim。出于某种原因,我的vim设置正在不断重置。 --EDIT--更多细节:具体来说,tabstop和autoindent被设置为默认值,即tabstop=8
和noautoindent
。我不会在我的设置中认为它正在设置它,因为当我键入:so $MYVIMRC
时,它会从我的vimrc重置为正确的值。我认为vim是某种方式"忘记"我的设置?
我还没有弄清楚究竟是什么导致它,但它经常发生,几乎每隔几分钟。当我专注于另一个窗口或在tmux中切换窗格时,它似乎最常发生。但它并不是每次都会发生,有时它只是在打字时发生。我不知道问题是什么,但它非常令人沮丧。此外,它似乎最常发生在python上,略微少用javascript,甚至更少用PHP或其他语言。虽然这可能是我花费大部分时间在python和javascript中工作......
我之前遇到的问题是我将乱码输入我的状态栏:Vim inside Tmux: <C-w>l (swapping between vim splits) enters ^]lfilename^] into vim。这解决了这个问题,但似乎已经引起了这个问题。
以下是我认为的.vimrc,.tmux.con和.bashrc的相关部分。这些都是我的设置,我没有包含键绑定。
set nocompatible
set showmatch
execute pathogen#infect()
syntax enable
filetype plugin indent on
colorscheme desert
set t_Co=256
set shiftwidth=4
set softtabstop=4
set backspace=indent,eol,start " consume expanded tabs if possible
set expandtab
set shiftround
set autoindent
set relativenumber
set showmode
set showcmd
set hidden
set autoread
set ignorecase
set smartcase
set incsearch
set autochdir
set laststatus=2
set statusline=%<%F\ %h%m%r%=%-14.(%l,%c%V%)\ %13.L\ %P
set titlestring=%F
set splitbelow
export TERM=screen-256color
export TERM=screen-256color
答案 0 :(得分:2)
某些设置是缓冲区或窗口的本地设置。缩进设置,例如'shiftwidth'
,'softtabstop'
和'expandtab'
是缓冲区的本地,而不是全局的。这是有道理的,因为不同的文件类型有不同的需求。需要完全不同的缩进设置的类型的一个很好的例子是python和makefile。
设置每个文件类型的缩进设置通常采用以下方式之一:
:h modeline
)autocmd
中使用~/.vimrc
。例如autocmd FileType c,cpp,cs,java setlocal shiftwidt=4 softtabstop=4 expandtab
~/.vim/after/ftplugin/python.vim
中。将python
替换为您希望具有特定设置的任何文件类型。注意:您可以通过:set ft?
就个人而言,我喜欢after目录结构,因为它很好而且整洁,并且使我的~/.vimrc
文件中的杂乱无章。
如需更多帮助,请参阅:
:h local-options
:h 'sw
:h 'rtp
:h after-directory
:h ftplugin-overrule
答案 1 :(得分:0)
你说你在javascript和python中工作,并且你在它们之间进行更改时注意到了区别。你确定这是在改变,而不是你得到javascript和python的不同行为吗?
注意病原体#infect()。您可能安装了类似于syntastic的东西,而这些东西又有javascript和python的lint工具。这些工具可能具有特定于文件类型的缩进设置。如果你有一些关于PEP8 for python的东西,它可能默认为间距而不是缩进标签。
检查.vim / ftplugin和.vim / ftdetect,可以放置特定于文件类型的设置,这将覆盖.vimrc中指定的默认行为。