2011-08-11 6 views
1

새로운 Java 소스 파일에 사용 된 특정 autocmd가 트리거되지 않은 이유를 알아 내기 위해 .vimrc와 .vim/ftplugin/java.vim을 정리하기로 결정했습니다. . 이로 인해 모든 Java 관련 autocmds가 트리거되지 않습니다. 예 : :make으로 더 이상 컴파일 할 수 없습니다. 누군가 내가 아래의 .vimrc 파일에서 내가 뭘 잘못했는지 말해 줄 수 있습니까? 나는 java.vim도 추가했다.Vim : .vimrc 정리 후 자동 호출이 실행되지 않음

의 .vimrc :

set nocompatible 
set bs=2 
set tw=72 
set cindent 
set mouse=a 
set nowrapscan 
set showmatch 
set showmode 
set uc=0 
map ^H X 
map \e[3~ x 
set mousehide 
set hlsearch 
let c_comment_strings=1 

" Color for xiterm, rxvt, nxterm, color-xterm : 
if has("terminfo") 
set t_Co=8 
set t_Sf=\e[3%p1%dm 
set t_Sb=\e[4%p1%dm 
else 
set t_Co=8 
set t_Sf=\e[3%dm 
set t_Sb=\e[4%dm 
endif 

"Appearences 
colorscheme wombat256 
set t_Co=256 

set path+=. 

syntax on 
filetype plugin indent on 

map gf <C-W>f 
set number 
set grepprg=grep\ -nH\ $* 

"Typo/spelling abbreviations 
ab weigth weight 

java.vim :

set shiftwidth=4 
au BufRead,BufNewFile *.java set textwidth=80 
au BufRead,BufNewFile *.java set makeprg=javac\ % 
au BufRead,BufNewFile *.java set errorformat=%A%f:%l:\ %m,%+Z%p^,%+C%.%#,%-G%.%# 
au BufRead *.java set include=^\s*import 
au BufRead *.java set includeexpr=substitute(v:fname,'\\.','/','g') 

"Add some boiler plate 
au! BufNewFile *.java 
\ exe "normal O/*\r" . expand('%:t') . "\t" . strftime("%B %d %Y") . 
\ "\r/\r\rpublic class " . expand('%:t:r') . " {\r\t" | 
\ startinsert! 

"Abbreviations 
ab psvm public static void main(String[] args) {<ESC>o 
ab sopl System.out.println();<ESC>hi 
ab sepl System.error.println();<ESC>hi 
ab fori for (int i = 0; i <; i++) {<ESC>7hi 

편집 : 된 .java 확장자를 가진 파일을 열고 set filetype?을 할 때 나는 filetype=java를 얻을 수 있지만 않는 au의 없음 들었어.

답변

0

java.vim을 ~/.vim/ftplugin/java /java.vim으로 이동해야한다고 생각합니다.

'au'필터 뒤에 java.vim의 설정을 입력 할 필요가 없습니다. 전체 파일은 java 파일 용으로 제공됩니다.

setlocal textwidth=120 wm=120 smartindent expandtab softtabstop=4 

" Compile maven 
nmap <F5> :!mvn compile<cr> 
0

사이드 참고 : 내 .vim/ftplugin/자바/java.vim에서 내가 좋아하는 라인을 가지고 werkshy 그것을 지적한 바와 같이, 모든 정의가 자동 명령해야한다 자바 ftplugin으로 가야한다 -비어 있는. 그리고 모든 정의는 버퍼 로컬이어야합니다.

setlocal textwidth=80 
... 
ab <buffer> psvm public static void main(String[] args) {<ESC>o 
nnoremap <buffer> <F5> :make<cr> 

위로 문제에 : 여기, 템플릿 로딩 자동 명령은 너무 늦게 정의된다. 플러그인/.vimrc에 입력해야합니다. 가장 좋은 해결책은 확실하게 template-expander plugin에 의존하는 것입니다. 대부분은 오늘날 viml 함수의 해석을 지원합니다. 이렇게하면 템플릿을 훨씬 더 쉽게 관리 할 수 ​​있습니다.