2014-09-17 1 views
1

tmux에서 vim을 사용하고 있습니다. 어떤 이유로, vim 설정이 계속 재설정됩니다. --EDIT-- 세부 정보 : 구체적으로 tabstop 및 autoindent가 기본값 인 tabstop=8noautoindent으로 설정됩니다. 내 설정에서 뭔가를 생각하지 않는다. 그 이유는 내가 입력했을 때 :so $MYVIMRC이 내 vimrc에서 적절한 값으로 재설정되기 때문이다. vim은 어떻게 든 내 설정을 "잊어 버린"것 같아요?Vim 설정이 계속 재설정됩니다.

정확히 무엇이 원인인지 알아낼 수는 없지만 거의 모든 몇 분 동안은 자주 발생합니다. 그것은 내가 다른 창에 집중하거나 tmux에서 창을 전환 할 때 가장 자주 발생하는 것 같습니다. 그러나 매번 발생하지는 않으며 때로는 입력하는 동안 발생합니다. 나는 그 문제가 무엇인지 모르지만 그것은 매우 실망 스럽다. 또한, 파이썬으로 가장 많이 발생하는 것으로 보입니다. 자바 스크립트로는 약간 더 적고 PHP 나 다른 언어로는 더 자주 발생하지 않습니다. 비록 이것이 내가 파이썬과 자바 스크립트로 작업하는 데 대부분을 소비 할 수는 있지만 ...

내 상태 표시 줄에 멍청 해지는 문제가 좀 더 일찍 발생했습니다 : 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 

의 .vimrc의 .bashrc : 당신은 변화 할 때 자바 스크립트와 파이썬에서 작업하고 차이를 느낄 것이라고 말했다
export TERM=screen-256color 

.tmux.conf

export TERM=screen-256color 
+0

설정은 무엇 특별히 리셋/변경되는? 들여 쓰기 설정이 변경 되었습니까? 이러한 경우는 이러한 옵션이 버퍼가 아닌 로컬에 있기 때문입니다. ': help'를 통해 변경되는 각 옵션을보고 싶을 수도 있습니다. 나는 또한': h local-options '을 보길 제안한다. –

+0

들여 쓰기와 tabstop은 내가 가장 눈에 띄는 두 가지이다. 이러한 설정에 대한 로컬 및 글로벌 값이 있다는 것을 깨닫지 못했습니다. 내 vimrc에서 정의한 것과 동일한 tabstop과 indent 기능을 원한다. 명시 적으로 지정하지 않으면 로컬 설정을 원하지 않는다. vim이 열어 놓은 모든 버퍼에 대해 vimrc의 설정을 사용하도록하는 방법이 있습니까? – Trevor

+0

게시 된'.vimrc'에는 탭 정지 설정이 없으므로'tabstop'이 어떻게 되돌릴 수 있는지 잘 알지 못합니다. 어쨌든, 당신이 변경을 발견 한 후에': verbose set indent? '의 결과는 무엇입니까? – ohlec

답변

0

그들 사이에. 이게 바뀌고 있고 자바 스크립트와 파이썬에서 다른 동작을하지 않는 것이 확실합니까?

병원체 # infect()에 유의하십시오. 당신은 아마도 자바 스크립트와 파이썬을위한 보푸라기 도구를 가지고있는 신택스가 설치된 것과 같은 것을 가질 것입니다. 이러한 도구에는 파일 유형에 특정한 들여 쓰기 설정이있을 수 있습니다. 파이썬에 대해 PEP8을 따르는 무언가가 있다면, 들여 쓰기를위한 탭 대신에 공백이 기본값이 될 것입니다.

.vim/ftplugin 및 .vim/ftdetect를 확인하면 .vimrc에 지정된 기본 동작보다 우선하는 파일 형식 별 설정을 적용 할 수 있습니다.

+0

그게 문제라고 생각하지 않습니다. 내가 할 때 : $ MYVIMRC 그것은 내가 원하는 값으로 tabstop과 자동 들여 쓰기를 재설정한다. 그래서 나는 그것을 변화시키고있는 나의 환경에서 그 어떤 것도 생각하지 않는다. tabstop = 8, noautoindent 등 ... – Trevor

1

일부 설정은 버퍼 또는 창에 대해 로컬입니다. 들여 쓰기 설정, 예 : 'shiftwidth', 'softtabstop''expandtab'은 버퍼에 로컬이며 전역이 아닙니다. 다른 파일 유형이 서로 다른 요구를 가지기 때문에 이는 의미가 있습니다. 들여 쓰기 설정이 완전히 다른 유형의 좋은 예는 python과 makefile입니다. 파일 형식에 따라 들여 쓰기 설정을 설정

은 일반적으로 다음 중 한 가지 방법으로 수행됩니다 :

  • 사용 모드 라인을 각 파일에 대해. 심한! (:h modeline)
  • ~/.vimrcautocmd을 사용하십시오. 예 : autocmd FileType c,cpp,cs,java setlocal shiftwidt=4 softtabstop=4 expandtab
  • ~/.vim/after/ftplugin/python.vim에 설정하십시오. python을 특정 설정이 필요한 파일 유형으로 바꿉니다.

참고 :이 좋은 깔끔한 내 ~/.vimrc 파일에서 혼란을 유지과 같이 :set ft?

를 통해 버퍼의 파일 형식을 찾을 수 있습니다 개인적으로 난 후 디렉토리 구조를 좋아한다. 더 도움말을 참조하십시오

는 :

:h local-options 
:h 'sw 
:h 'rtp 
:h after-directory 
:h ftplugin-overrule 
+0

갑자기 멈출 때까지 이것은 처음에 작동했습니다. ': verbose set autoindent? '는'noautoindent ~/.vim/after/ftplugin/python.vim'에서 마지막으로 설정합니다. 그러나, 여기에 그 파일의 전체가 있습니다'set softtabstop = 4 set autoindent' 어떤 생각일까요? – Trevor

+0

그냥'set softtabstop = 4 autoindent'를 한 줄에 모두 넣고 싶으면 ('set'이 아니라)'set softtabstop = 4'와'set autoindent'로' ~/.vim/after/ftplugin/python.vim'. –

+0

은 스택 오버플로에 대한 주석 형식으로 인해 별개로 표시됩니다. 두 줄 모두'set'을 가지고 있습니다. – Trevor

관련 문제