読者です 読者をやめる 読者になる 読者になる

その手の平は尻もつかめるさ

ギジュツ的な事をメーンで書く予定です

備忘録:Vimの設定(Java)

Emacs派閥だったんですが、やむにやまれぬ事情にてVimを使う事と相成りました……
今まではvi(Vim)の事を(あくまでユーモアの一環として)disりにdisりまくっていたんですが、
慣れると案外良い物ですね。住めば都感があります。


その所為か、最近やたらめったらVimの環境ばかり整えておりまして(覚えているだけでも5台)、
むしろVimの環境を整えるのが仕事、みたいな感じになっております。
まあ、これ良い機会にとVimの設定を忘れないようにと書き連ねていこうかなと思います。
Vimに関してはほぼズブの素人なんで、「ココ、もっとこうすると幸せになれるよ」というアドヴァイスや
「こんな設定はマズい!」みたいなご指摘は大歓迎です。

共通の部分

特定の言語に依存しない、コモンな部分は
Vim初心者的導入メモ 2/3 「vimrc設定」編 - ナレッジエース

ウノウラボ by Zynga Japan: viを使おう
から、欲しい部分だけを引っ張ってきて.vimrcファイルにペーストしてるのでそこは省きます。
(というか、「.txtファイルで自動的に日本語入力ON」っていう部分、エラー起きてるんですけど
僕だけですかね?まあ、日本語を扱う機会はそんなに無いので、今のところ無視してるんですが……)

JAVA向けの設定

で、最近のお仕事ではJAVAを良く使うので、VimでもJAVAが書きやすければなー、
ってことで以下の操作を行いました。

    やっぱり、キーワードに対応して色が付いていた方が可読性が増す気がするので、その設定をば。
    まずは、デフォルトでサポートされていないキーワードでもハイライトしちゃうニクいヤツ、javaid.vim
    javaid.vim
    http://www.fleiner.com/vim/download.html
    からダウンロードします。
    ダウンロードしたjavaid.vimを、僕は
    /usr/share/vim/vim73/syntax
    に突っ込んでます。
    でもって、.vimrcに

	set sm
	set ai
	syntax on
	let java_highlight_all=1
	let java_highlight_functions="style"
	let java_allow_cpp_keywords=1

    を書き込んで保存します。そうすると、*.javaファイルを開いた時に自動的にハイライトされます。
    (ただ、カラースキーマ使うと、ハイライトされなくなるんですが、仕様でしょうか)

  • 自動補完機能を付ける。

    やっぱり自動補完機能が付いていた方が便利なので、その機能も付けます。
    オムニ補完を利用したjavacompleteなるプラグインが便利そうでしたので、それを使いました。
    javacomplete
    javacomplete - Omni Completion for JAVA : vim online
    javacompleteをダウンロードしたら、端末上で

	unzip javacomplete.zip -d /usr/share/vim/vimfiles

    を実行してインストールします。
    で、.vimrcに

	"JAVA自動補完(javacomplete)
	autocmd FileType java :setlocal omnifunc=javacomplete#Complete
	autocmd FileType java :setlocal completefunc=javacomplete#CompleteParamsInfo

    を書き込んで保存します。
    すると、で補完が効くようになります。
    で次の候補、で前の候補、で「キミに決めた!」が出来るようです。
    (なんか、使いにくい感じがするんで、そのうちカスタマイズしたいです)

  • Vimのエディタ上でコンパイルやら実行やらがやりたい

    そのまんまです。
    僕は、":Make"でコンパイル、":Do"でコンパイル後のファイルを実行、":Exe"でコンパイルしてから実行、
    と3つのコマンドを使えるようにしましたが、実際":Do"コマンドは要らなかったんじゃ? とも思ってます。
    .vimrcに以下を記述します。

	"[JAVA] :Makeでコンパイル
	autocmd FileType java :command! Make call s:Make()
	function! s:Make()
	    :w
	    let path = expand("%")
	    let syn = "javac ".path
	    let dpath = split(path,".java$")
	    let ret = system(syn)
	    if ret == ""
	        :echo "=======\r\nCompile Success"
	    else
	        :echo "=======\r\nCompile Failure\r\n".ret 
	    endif
	endfunction
	
	"[JAVA] :Doでコンパイル後のファイルを実行 
	autocmd FileType java :command! Do call s:Do()
	function! s:Do()
	    let path = expand("%")
	    let dpath = split(path,".java$")
	    let syn = "java ".dpath[0]
	    let ret = system(syn)
	    :echo "=======\r\n実行結果:\r\n".ret
	endfunction
	
	"[JAVA] :Exeでコンパイルしてから実行
	autocmd FileType java :command! Exe call s:Javac()
	function! s:Javac()
	    :w
	    let path = expand("%")
	    let syn = "javac ".path
	    let dpath = split(path,".java$")
	    let ret = system(syn)
	    if ret == ""
	        :echo "=======\r\nCompile Success"
	        let syn = "java ".dpath[0]
	        let ret = system(syn)
	        :echo "=======\r\n実行結果:\r\n".ret
	    else
	        :echo "=======\r\nCompile Failure\r\n".ret
	    endif
	endfunction

    てな感じで、コマンドを打ち込む事により各種処理を行えるようにしました。


    ざっとこんな感じです。
    Vimはまだまだ使い始めたばかりなので、老舗レストランのソースよろしく、
    継ぎ足し継ぎ足しで.vimrcを熟成させて行けたらと思っております。
    ご意見等、お待ちしております。