Vimにeskkをインストールする
はじめに
Vim上での日本語入力の手段としてeskk.vimを導入しましたので自分用のメモも兼ねて残します。
インストール
eskk.vim
好みのプラグインマネージャでeskkを導入してください。
辞書
skkを使うには読みとの対応が列挙された辞書が必要になるので、ダウンロードしてeskkに教えてあげる必要があります。
辞書ファイルはこちら↓などで公開されている物を利用しましょう。
自分でファイルをダウンロードして配置することもできますが、面倒ですので、自動でダウンロードするスクリプトを用意しました。
以下のスクリプトは辞書ファイルを ~/.config/eskk
下にダウンロード・配置します。
~/.config/eskk
配下に辞書が無いときのみ発動します。
if !filereadable(expand('~/.config/eskk/SKK-JISYO.L'))
call mkdir('~/.config/eskk', 'p')
call system('cd ~/.config/eskk/ && wget http://openlab.jp/skk/dic/SKK-JISYO.L.gz && gzip -d SKK-JISYO.L.gz')
endif
また、↓を.vimrc
に書き込んでおけばダウンロードしてきたファイルがeskkに読まれます。
let g:eskk#directory = "~/.config/eskk"
let g:eskk#dictionary = { 'path': "~/.config/eskk/my_jisyo", 'sorted': 1, 'encoding': 'utf-8',}
let g:eskk#large_dictionary = {'path': "~/.config/eskk/SKK-JISYO.L", 'sorted': 1, 'encoding': 'euc-jp',}
skkの使い方
以上の設定を終えた後、Insertモードで<C-j>をタイプすることでeskkが起動するはずです。この状態ではローマ字しか打てないのですが、漢字で打ちたい単語の初めの文字を大文字で打つことで、▽の文字が入りスペースキーで変換をすることが出来ます。 また、それぞれのキーを押下することで、平仮名・片仮名・英数を入力できます。
また、送り仮名の付いた漢字は、
送り仮名
↓
OkuRiGana
といった形で入力できます。
カタカナモードなどに移行しなくても、変換の際スペースの代わりにモードキーを押して変換することもできます。
Ringoq
↓
リンゴ
StickyShift
skkの入力では漢字を入力するたびにShiftキーを押すのですが、それでは小指が壊れてしまいます。
ですので、eskkにはStickyShiftという便利な仕組みが存在します。
この時、Shiftキーの代わりに";"キーを利用することができます。
例えば、
漢字
↓
;kanji
のように入力できます。
この動作を変更し、StickyShiftを無効にするなどの設定は↓のように行うことができます。
以下の例では、SrickyShiftのキーとして;を無効にし、Qを新たに割り当てています。
autocmd User eskk-initialize-post call s:eskk_initial_pre()
function! s:eskk_initial_pre() abort
EskkUnmap -type=sticky ;
EskkMap -type=sticky Q
endfunction
を.vimrcに書き込んでおくと良いです。(多分eskk-initialize-postでやらないと動かない)
StatusLineに変換モードを表示
g:eskk#statusline()
関数を使うと現在の変換モードを取得できるのですが、どうもLightline等に関数を設定するとVimの起動がめちゃ遅くなります。
そこで、新たに↓のような関数を定義しておくと良いでしょう。
function L_eskk_get_mode()
if (mode() == 'i') && eskk#is_enabled()
return g:eskk#statusline()
else
return ''
endif
endfunction
私はもう少しシンプルに表示したいので、↓のような設定に落ち着きました。
function L_eskk_get_mode()
if (mode() == 'i') && eskk#is_enabled()
return g:eskk#statusline_mode_strings[eskk#get_mode()]
else
return ''
endif
endfunction
let g:lightline = {
\ 'active': {
\ 'left': [ ['mode', 'paste'], ['readonly', 'filename', 'eskk', 'modified'] ]
\ },
\ 'component_function': {
\ 'eskk': 'L_eskk_get_mode'
\ },
\ }
おわり
Discussion