Iori's Blog

論文とか句読点じゃなくて,.なのめんどいなぁ...せや!変換プラグイン作ったろ!(neovim)

Published on: Mon Jul 20 2026 00:00:00 GMT+0000 (Coordinated Universal Time)

今までは大学の課題でレポートを書くときはword一択だったのですが、 AIがTeXやマークダウンの雛形を簡単に作ってくれるので、 数式が綺麗なこれらでレポートを書くことが増えています。 あと単純にneovim使いたいので。

そんな中気にするべきかどうか分からないですが、句読点を使うか.,を使うか問題があります。

レポートではあんま気にしなくていいとは思うんですけども、 論文では句読点が使えません。(卒論の準備部分を書いた後に言われて泣きそうになりましたが)

多分これらの簡単な解決方法としてはIMEの設定を変えることだと思うのですが、 普段は句読点使いたいのでできればneovim使っている時になんかいい感じにできるやつが欲しいです。 軽く調べた感じだとなんかいい感じのなかったんで、句読点を一括で変換できるプラグインを作りました。 ちなみにこれ作っている途中で気がついたのですが、:%s/、/,/g | %s/。/./gコマンドで一発です😭。 (まあだからないのだろうけど)

でもこのコマンド毎回打つのは多分めんどいし忘れちゃうので作ってよかったのではないかとは思っています。

リポジトリ

github.com/iorinu/kutoten-toggle.nvim
0

これ最初AIに書かせたのですが、出力されたコード読んでて初めて変な書き方するな〜って部分を見つけました。

local function convert(from, to, label)
  replace_in_buffer(from.comma, to.comma)
  replace_in_buffer(from.period, to.period)
  vim.notify("kutoten-toggle: " .. label, vim.log.levels.INFO)
end

-- 通常 → 全角
function M.to_zen()
  convert(M.config.normal, M.config.zenkaku, "全角論文モード(,.)に変換")
end

-- 通常 → 半角
function M.to_han()
  convert(M.config.normal, M.config.hankaku, "半角モード(, .)に変換")
end

-- 全角/半角 → 通常
function M.to_normal()
  convert(M.config.zenkaku, M.config.normal, "通常モード(、。)に変換")
  replace_in_buffer(M.config.hankaku.comma, M.config.normal.comma)
	replace_in_buffer(M.config.hankaku.period, M.config.normal.period)
end

to_normal関数について、せっかくconvert関数で抽象化したのになぜかここだけ半角から戻すのは関数を使ってませんでした。(メッセージが2回出ちゃうから微妙だと思ったのかな?)

書き直して

-- 全角/半角 → 通常
function M.to_normal()
  convert(M.config.zenkaku, M.config.normal, "通常モード(、。)に変換")
  convert(M.config.hankaku, M.config.normal, "通常モード(、。)に変換")
end

にしましたが、実際どっちがいいのでしょう。

Tags:

programming

lua

neovim