Vim: Autocmds не запускается после очистки .vimrc - PullRequest
1 голос
/ 11 августа 2011

Чтобы выяснить, почему не был запущен определенный autocmd, используемый для новых исходных файлов Java, я решил очистить мой .vimrc и мой .vim / ftplugin / java.vim.Это привело к тому, что все мои связанные с Java autocmds не сработали.Например.Я не могу больше скомпилировать с :make.Может кто-нибудь сказать мне, что я испортил в моем .vimrc ниже?Я также добавил свой java.vim.

.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 не сработает.

Ответы [ 2 ]

0 голосов
/ 26 августа 2011

Примечание : Как указал werkshy, все ваши определения должны идти в java-ftplugin, который не должен содержать автокоманд.И там все определения должны быть локальными в буфере: например,

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

Назад к вашей проблеме : Здесь автокоманда загрузки шаблона определена слишком поздно.Это должно быть сделано в плагин / ваш .vimrc.Лучшее решение, безусловно, полагаться на плагин расширения шаблона .Большинство из них в настоящее время поддерживают интерпретацию функции viml.Таким образом, шаблон будет намного проще поддерживать.

0 голосов
/ 26 августа 2011

Я думаю, вы должны переместить ваш java.vim в ~ / .vim / ftplugin / java / java.vim.

Вам не нужно помещать настройки в java.vim за фильтром 'au'. Весь файл будет получен для файлов Java.

например. в моем .vim / ftplugin / java / java.vim у меня есть такие строки:

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

" Compile maven
nmap <F5> :!mvn compile<cr>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...