🕌

詳説 最新のVim+SKKで日本語入力する方法

2021/09/30に公開約3,700字

突然ですが、昨日こんなツイートをしました。
https://twitter.com/83_hasu/status/1443533878401011712
このツイートが筆者の想像よりも反応があったので、今回はvimにSKKという日本語IME環境を構築する方法を記事にしていきます。

SKKってなんぞや??

多分これを見ている読者のほとんどがSKKを知らないと思います(筆者もvim-jpに入るまで知らなかった)

SKK(エスケイケイ、Simple Kana to Kanji conversion program)とは、オープンソースで開発されている日本語入力システム(日本語入力メソッド)である。
https://dic.nicovideo.jp/a/skk より

簡単に言えばGoogle日本語入力などと同じIMEです。SKKについて詳しく説明すると記事が長くなる&本筋から外れてしまうので今回は解説しません。
詳しく知りたい方は以下をご覧ください。
https://dic.nicovideo.jp/a/skk
https://ja.wikipedia.org/wiki/SKK

環境構築

今回は以下の手順で行なっていきます。

  • OSにVim起動のショートカットを登録
  • denops.vimとdenops-skkeleton.vimの導入
  • ddc.vimの導入、連携

筆者の環境は以下の通りです

OS: ArchLinux(Gnome)
Vim 8.2.3458
Plugin Manager : dein.vim

OSにVim起動のショートカットを登録

まずはVimを一発で起動できるように、ショートカットを登録していきます。

  1. Linuxのkeyborad設定を開き、「Customize Shortcuts」をクリックします。
  2. 出現してきたウィンドウの一番下に、「Custom Shortcuts」があるのでクリックします。

そうすると、このような画面になっていると思います。

みなさんの画面はおそらく何も追加されていないと思います

  1. 「+」をクリックして、以下の通りに入力します。
Name Launch Vim
Command gnome-terminal -- vim
Shortcut Alt+V(好みで変更してください)

これで、「Vimのショートカット追加」のステップは完了です。

denops.vimとdenops-skkeleton.vimの導入

では次に、vimのSKKプラグインを導入していきます。
導入するプラグインはdenops-skkeleton.vimdenops.vimです。
筆者はdein.vimでプラグインを管理しているため、以下のようになります。
(お使いのプラグインマネージャに適宜読みかえてください)

dein.toml
[[plugins]]
repo='vim-denops/denops.vim'

[[plugins]]
repo='vim-skk/denops-skkeleton.vim'

そして、.vimrcに以下を追記します。

.vimrc
imap <C-j> <Plug>(skkeleton-toggle)
cmap <C-j> <Plug>(skkeleton-toggle)

call skkeleton#config({
\'eggLikeNewline':v:true
\})

これで、「denops.vimとdenops-skkeleton.vimの導入」のステップは完了です。
vim上で日本語が入力できるようになりました!

ddc.vimの導入、連携

ここからはおまけの様なものです。
vim界隈では有名なShougoさんが、最近ddc.vimという自動補完プラグインをリリースされました。
https://zenn.dev/shougo/articles/ddc-vim-beta
ここでは、ddc.vimとdenops-skkeletonを連携させ、より日本語入力を効率化していきたいと思います。

まずはddc.vimと関連プラグインを導入していきましょう
dein.tomlに以下を追記してください。

dein.toml
[[plugins]]
repo='Shougo/ddc.vim'

[[plugins]]
repo='Shougo/ddc-matcher_head'

[[plugins]]
repo='Shougo/ddc-sorter_rank'

そして、.vimrcに以下を追記します。

.vimrc
call ddc#custom#patch_global('sources', ['skkeleton'])
call ddc#custom#patch_global('sourceOptions', {
    \   '_': {
    \     'matchers': ['matcher_head'],
    \     'sorters': ['sorter_rank']
    \   },
    \   'skkeleton': {
    \     'mark': 'skkeleton',
    \     'matchers': ['skkeleton'],
    \     'sorters': []
    \   },
    \ })

これで、以下のような入力環境になります

denops-skkeletonリポジトリより

最終的な設定は以下のようになります。

.vimrc
imap <C-j> <Plug>(skkeleton-toggle)
cmap <C-j> <Plug>(skkeleton-toggle)

call skkeleton#config({
\'eggLikeNewline':v:true
\})

call ddc#custom#patch_global('sources', ['skkeleton'])
call ddc#custom#patch_global('sourceOptions', {
    \   '_': {
    \     'matchers': ['matcher_head'],
    \     'sorters': ['sorter_rank']
    \   },
    \   'skkeleton': {
    \     'mark': 'skkeleton',
    \     'matchers': ['skkeleton'],
    \     'sorters': []
    \   },
    \ })
dein.toml
[[plugins]]
repo='vim-denops/denops.vim'

[[plugins]]
repo='vim-skk/denops-skkeleton.vim'

[[plugins]]
repo='Shougo/ddc.vim'

[[plugins]]
repo='Shougo/ddc-matcher_head'

[[plugins]]
repo='Shougo/ddc-sorter_rank'

まとめ

これで、vim上で日本語入力を行なえるようになりました。
Linuxでは最近あまりIMEが安定していません。ですが、これをいい機会として自分の好きなエディタで全ての日本語入力を行いませんか?
そうすれば、もっとエディタに愛着が湧き開発がさらに楽しくなると筆者は考えています。

Discussion

ログインするとコメントできます