2020年12月3日木曜日

VSCODEのssmacroを使って全角の間の邪魔なスペースを削除する

日本語 ドキュメントをPDFなどからコピペすると、全角文字の間に半角スペースが不自然に入ったりします。修正が面倒なのでVSCODEのエクステンションssmacroに登録しました。

全ての全角文字は [^\x00-\x7F] でascii以外でマッチさせています。


ショートカットを定義するファイルを作ります。

ssmacro_delete_space_bw_zenkaku.json

[
    {
        "args":
        {
            "find": "([^\\x00-\\x7F]) ([^\\x00-\\x7F])",
            "replace": "$1$2",
            "all":true,
            "reg":true,
            "flag":"gmi"
        },
        "command": "ssmacro.replace"
    }
]

キーバインドでCtrl+8 にセットします。キーバインドのファイルはUserのkeybindings.jsonにしています。 上のマクロのjsonのフルパスを指定します。フルパス以外は使えないようです。

Code\User\keybindings.json

[
    {
        "key": "ctrl+8",
        "command": "ssmacro.macro", "args": {"path": "/fullpath/to/ssmacro_delete_space_bw_zenkaku.json"}
    },

]


これで例えば「あ<半角>あ」が「ああ」になります。

ssmacroの定義するファイルはコメントが入れられないのがちょっとだけ不便です。JSONだから仕方ないですかね。

私の場合、他にもAWSの用語を省略するときに便利に使っています。


正規表現Tips

例えば、negative lookforward で、microsoftをMSにしたいけど、ピリオドが次に来るときは除外したいときはこうなります。ピリオドはエスケープするために\\がついています。
{
        "args": {
            "find": "Microsoft(?!\\.)",
            "replace": "MS",
            "all": true,
            "reg": true,
            "flag": "gmi"
        },
        "command": "ssmacro.replace"
    },

URL中にないauthenticationにマッチしたいとき

 "find": "(?<!https*://)authentication"

negative lookbehind でこのように書きます。

0 件のコメント:

コメントを投稿