title | emoji | type | topics | published | published_at | publication_name | |||||
---|---|---|---|---|---|---|---|---|---|---|---|
Vim を IME として使いこなす |
⌨️ |
tech |
|
true |
2023-07-12 00:00 |
vim_jp |
:::message この記事はVim駅伝の2023-07-12の記事です。 前回はtaniさんのVimmerのレベル10です。 次回はtomato3713さんのNeovimでディレクトリを開いた時に任意のファイラープラグインを起動する設定を楽にするプラグインを作ったです。 :::
この記事は、kuuさんの2023年3月15日のVim駅伝の記事に影響を受けて作成しました。
日本語入力の度にVimを起動していると、たまにモッサリすることがありました。そこで、日本語入力用のVimを i3 や sway の scratchpad に常駐させることでこの問題を改善しました。
私の Vim は起動時間が 40ms 程なのですが、起動時にいくつかの外部プロセスを起動しているためか、稀に起動が遅くなる時がありました。 私は OS の IME は削除して、すべての日本語入力を Vim 上で行っているため、たまに起きるこの遅延を何とも歯痒く感じていました。 そこで、日本語入力用の Vim を常にどこかに起動させておいて、日本語を入力する度に呼び出せたら便利だなと思い、i3 や sway の scratchpad を利用してみたら良いんじゃないかと思い至りました。 なお、Vim での日本語入力には前述のkuuさん作成の skkeleton というプラグインを使っています。 入力方法は SKK + AZIK にしています。
sway の設定ファイルに以下の2行を追加しておき、対応するシェル・スクリプトも作成します。i3 用には適宜書き換えてください。
私はAlt+I
で日本語入力用の Vim の表示をトグルさせているため、このようになります。
for_window [app_id="FloatingVim"] floating enable
bindsym $mod+i exec XMODIFIERS=@im= ~/.config/sway/ime.sh
#!/bin/bash -u
FloatingVim=$(swaymsg -t get_tree | jq -c '.. | .floating_nodes? | arrays[] | select(.app_id=="FloatingVim")')
if [ -z $FloatingVim ]; then
wezterm --config initial_rows=10 --config initial_cols=70 --config enable_tab_bar=false --config window_background_opacity=0.4 --config text_background_opacity=0.4 start --class FloatingVim vim
else
if [ "$(echo $FloatingVim | jq .focused)" = 'true' ]; then
swaymsg "move window to scratchpad"
else
swaymsg "[app_id=\"FloatingVim\"] focus"
fi
fi
Vim に翻訳用のプラグインや生成 AI 用のプラグインを入れておけば、この日本語入力用の Vim からもサクっと利用することができて便利でした。