|
|
||
SKKをVimで使えるようにする私的必須プラグインskk.vim、の改悪第二弾。
今回は、skk.vim 狙え版 ( 20080728 ) の公開と、これまでの変更点をまとめてみる。
SKK Manual: 変数索引を見ながら、簡単に実装できそうなものを追加してみた。
もう後方互換性はない。ただ気にならない程度の差異でおさまっていると思う。
以前からの変更も含めて、簡単にまとめると以下。
http://khkh.o0o0.jp/vim/skk.vim.patch.20080728
以前も説明したと思うが、念のため。
SKK的な入力だと左手小指への負担が、それはもうEmacs並でかなりキてるので、sticky-shiftぽいものを実装した。sticky-shiftについてはGoogleさんでよろしく。簡単かつ、いいかげんに説明すると、Shiftと英字の同時押しではなく、任意のキーを押してから英字を押す。Shiftの位置変更と、同時押しの回避で、負担が減る。そういう機能。
使い方は以下のような感じ。
let g:skk_sticky_key = ';'
機能をオフにしたい場合はskk_sticky_keyを:unlet!してください。
変換時の確定は通常、「<CR>」か「<C-j>」か「印字可能な文字」で行うが、印字可能な文字でない場合には、<C-j>を使うことが多い。左手小指が痛い。
そこでskk_kakutei_keyですよ。
確定キーを押した時点で変換が確定する。デフォルトでは<C-j>になっている。
使い方は以下のような感じ。
let g:skk_kakutei_key = '.'
意外と多い「間違って▽モードを開始してしまう」というシチュエーションで強制される<C-j>が減ることで、左手小指は苦痛からすこしは開放されるはず。
注意:この機能はWin32環境でGUI版のみで有効です。
モードを表す文字列は、skk.vimをデフォルトで使用していれば、'ruler'の一部として表示される。
でも、普通の人はずっと'ruler'を眺めているわけじゃない。普通はカーソル付近を見ているわけだ。じゃあ、モードを表すなら、どこに表示するのがいいか。そんなの、カーソルに決まってる。
というわけで、モードごとのカーソルの色付け機能です。
とりあえず、デフォルトの色で使ってみるといいでしょう。
let g:skk_use_color_cursor = 1
これで、カーソルが「かなモード」「カナモード」「アスキーモード」「全英モード」「SKK abbrevモード」で色付け/色分けされるはず。もし、それぞれの色を変えたい場合は、以下のように個々に指定してやるといい。
let g:skk_use_color_cursor = 1 let g:skk_cursor_hiragana_color = '#ff0000' " かなモード let g:skk_cursor_katakana_color = '#00ff00' " カナモード let g:skk_cursor_jisx0208_color = '#ffcc00' " 全英モード let g:skk_cursor_latin_color = '#000000' " アスキーモード let g:skk_cursor_abbrev_color = '#0000ff' " SKK abbrevモード
モードがすぐに分かれば、無駄なモード切替(<C-j>)が減り、負担が減るに違いない。
カーソルの色付けができれば、もうモード文字列なんてどうでもいい?いや、違う。モードの文字列は文字列できっちり表示させたい。表示の仕方はやっぱり人それぞれ。
そこで、モードごとの文字列を指定できるようにした。
デフォルトを以前のskk.vimと変更した。ここで後方互換性を失った。代わりにddskkにすこし近づいたはずだ*1。
使い方は以下。コメントにskk.vimの場合の設定例を示しておいた。その値に設定すればskk.vimと同じ表示になるはずだ。
let g:skk_latin_mode_string = 'SKK' " アスキーモード ( SKK:aA ) let g:skk_hiragana_mode_string = 'かな' " かなモード ( SKK:あ ) let g:skk_katakana_mode_string = 'カナ' " カナモード ( SKK:ア ) let g:skk_jisx0208_latin_mode_string = '全英' " 全英モード ( SKK:A ) let g:skk_abbrev_mode_string = 'aあ' " SKK abbrevモード ( SKK:aあ )
おまけとして、'statusline'を自分で変更している場合に'statusline'にSKKのモードを表示させる方法を書いておく。
function! StlFnc() return '[' . (&l:ft != '' ? &l:ft . ',' : '') . &l:ff[0] . ',' . (&l:fenc != '' ? &l:fenc : &enc) . ']' endfunction set statusline=%<%t\ %R%H%W%m%{StlFnc()}%{exists('*SkkGetModeStr')?SkkGetModeStr():''}%=%B,%c%V,%4l/%4L(%3p%%) " %{exists('*SkkGetModeStr')?SkkGetModeStr():''} の部分がそう。自分の'statusline'に組み込めばOK
日付を入力したい場面というのはたくさんあると思う。ddskkにも日付を挿入する機能がデフォルトで備わっているようなので、
本来skk.vim自体を修正する必要はなかったが、skk.vimでもデフォルトで使用できるように組み込んでおいた。
かな/カナモードで@を押せば、日付が入力される。
ここでは、使い方ではなく無効にしたい場合(オリジナルのskk.vimに戻したい場合)を書いておく。以下の一行を加えれば良い。
let g:skk_user_rom_func_rules = "@\tkana . '@'\<NL>"
そうではなくて、日付のフォーマットが気に食わない。そういう場合は、以下のような要領で変更してやればいい。
let g:skk_user_rom_func_rules = "@\tkana . strftime('%Y-%m-%d %H:%M:%S')\<NL>"
以上見てきたような修正は、差分としてはさほど大きくはない。せいぜい50行程度だと思う。
skk.vimを見ていて、イライラした部分として文字列の中のタブが直接タブで書かれていることだ。どうしても\tに直したかった。はじめに、自分のスタイルで読みたいと思い :retab を実行したら、動作しなくなった。信じられない。
そこで、skk_rom_kana_rules という巨大な変数(ローマ字の変換ルール)のタブを\tに置換した。その結果、差分が異常に大きくなった。
本来、ここにコードを直接はりつけるはずだったが、できなくなった。なので別にアップロードしてURLをはることにした。
これ、いまだに作者さんに連絡なしに編集してる。怒られないかとビクビクしてる。
もし使ってみた人が居たら感想ほしい。改善点しりたい。使われない、おれ、さみしい。
本家へのリンクを貼り忘れてたので修正
skk_use_color_cursorをskk_use_cursor_colorと間違えていたので修正
*1:ddskkを触ったことがないので、本当に近づいたかは分からない
本当に役立ってます。 emacsから帰ってきました。