geditで全角半角変換
ひとさまの文章をいじるときに全角半角を統一したくなる場面はよくあるけど、外国産のgeditにはそんな機能はない。これまでは手作業だったり、wine+sakuraを使ったりしていたけど、手作業は面倒だし、sakuraは変換したくないスペースやチルダまで変換されてしまう。変換のカスタマイズができるwz editor 4はwineでは安定していない。geditでテキストバッファをフィルターに渡してその出力を読み込むようなことできないかなと思っていたらあった。
ツール-Manage External Toolで+をクリックして以下のスクリプトを登録
#!/usr/bin/zsh sed -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ\ abcdefghijklmnopqrstuvwxyz\ 0123456789−+=%&!?()\ /ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\ 0123456789-+=%&!?()/'
入力は「現在の選択範囲」、出力は「現在の選択範囲を置き換える」を選択。
最初は「現在の選択範囲」がプログラムにどう渡されるのかがわからず悩んだが、なんのことはない、選択範囲をプログラムにパイプするものだった。
参考にしたサイト
Gedit のコードスニペット - L'Isola di Niente
ただ当初環境変数のGEDIT_SELECTED_TEXTを利用しようとして苦労した。この環境編集は改行をスペースに置換したものが入るという仕様のようだ。
GEDIT_CURRENT_WORDには全角英数文字記号を半角に変換したものが入っているという意外な仕様。でも選択範囲のすべてが入るわけではないのであまり使えるものではなさそう。