Vim设置不断重置

  • 本文关键字:设置 Vim vim tmux
  • 更新时间 :
  • 英文 :


我在tmux中使用vim。出于某种原因,我的vim设置不断被重置--EDIT——更详细:具体地说,tabstop和autoindent被设置为默认值,即tabstop=8noautoindent。我不认为是我的设置中有什么东西将它们设置为那样,因为当我键入:so $MYVIMRC时,它会从我的vimrc重置为正确的值。我觉得vim不知怎么"忘记"了我的设置?

我还没能弄清楚到底是什么原因导致的,但这种情况非常频繁,几乎每隔几分钟就会发生一次。当我关注另一个窗口或在tmux中切换窗格时,这种情况似乎最常见。但它并不是每次都发生,有时只是在打字时发生。我不知道问题出在哪里,但很令人沮丧。此外,这种情况似乎在python中发生得最多,在javascript中发生得略少,在PHP或其他语言中发生得更少。虽然这可能是我花了大部分时间在python和javascript上。。。

我早些时候遇到了一个问题,我的状态栏里输入了胡言乱语:Tmux:<C-w>l(在vim拆分之间交换)在vim中输入^]lfilename^]。这解决了这个问题,但似乎引发了这个新问题。

以下是我认为的.virc、.tmux.com和.bashrc的相关部分。这些都是我的设置,我没有包括密钥绑定。

.vmrc

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

.bashrc:

export TERM=screen-256color

.tmux.conf

export TERM=screen-256color

某些设置是缓冲区或窗口的本地设置。缩进设置,例如'shiftwidth''softtabstop''expandtab',是缓冲区的本地设置,而不是全局设置。这是有道理的,因为不同的文件类型有不同的需求。需要完全不同缩进设置的类型的一个很好的例子是python和makefile。

设置每个文件类型的缩进设置通常通过以下方式之一完成:

  • 对每个文件使用模型线。总的(:h modeline
  • ~/.vimrc中使用autocmd。例如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

您说过您使用javascript和python,并且在更改它们时注意到了差异。你确定这正在改变,而不是javascript和python的行为不同吗?

注意病原体#infection()。您可能已经安装了类似语法的东西,而语法又将有用于javascript和python的lint工具。这些工具可能具有特定于文件类型的缩进设置。如果您在python的PEP8后面有东西,那么它可能默认为空格,而不是缩进的制表符。

检查.vim/ftplugin和.vim/fdetect,文件类型特定的设置可以放在那里,它将覆盖在.vmrc.中指定的默认行为

最新更新