0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【超簡単&便利】自動カッコ補完機能を作ってみた(Windows・AHK)

Posted at

本記事について

本記事は、VSCodeのような自動カッコ補完機能を作る方法について解説しています。
具体的には、AutoHotkeyと呼ばれるWindows専用スクリプト言語を使用して
「カッコ開が入力されたら、自動でカッコ閉を入力し、カーソルを中央に移動する」 機能を作ります。

これはカッコだけではなくダブルクォーテーション等でも可能でどんなテキストエリアでも利用可能!

Windows限定なので、ご了承ください。

AHKをインストール

まず最初に、AutoHotkeyを以下リンクからダウンロードします。
Ver.2.0をダウンロードしてください。
AutoHotkeyダウンロードページ

私の環境では、Mirosoft Edgeでは人間の認証が終わる気配がありませんでした...
ですので、Chromeでのダウンロードをおすすめします。

ダウンロードされたら、"Install"をクリックし、インストールします。
特にこだわりがなければ、指定されているフォルダのままでいいでしょう。

ダウンロード1

インストールが完了されれば、New Scriptなどが書かれている画面になると思います。
このウィンドウは閉じて結構です。すると、"Untitled.ahk"という拡張子のファイルがエクスプローラに勝手に表示されると思います。(表示されなかったら、「コードを入力」セクションに行ってください)

これ右クリックして、"メモ帳で編集"をクリックしましょう。
ダウンロード3

コードを入力

先ほどの、Untitled.ahkが開かなかった方は、フォルダの位置はどこでも構わないので、テキストファイルを新規作成し、拡張子を .ahkにしてください。そして、編集できるように開いてください。

まず、最初にこの2行を入力してください。

  • スクリプトを実行すると、同じスクリプトの別インスタンスが起動しないようにする設定
    既に実行中ならば、新しいインスタンスを起動せずに現在のスクリプトを上書き実行する設定
  • スクリプトがすぐに終了せず、常駐するようにする設定

です

Untitled.ahk
#SingleInstance Force
#Persistent

そして、次は実際にカッコ開が入力されたら隣にカッコ閉が入力されるようにコードを書いていきます。
基本構文はこちらです。普通カッコ()の場合です。

$(::
    SendInput ({}){Left}
return

$が条件式です。その隣にカッコ開、コロン:を2つ書いて改行, インデントします。
SendInputの隣にカッコ開とカッコ閉で {}を挟み、外側に{Left}を記入
改行して、returnと書きます。
追記したい場合は、前のreturnの下に改行して続けて書きます。

実行

実際に使えるようにしていきましょう。
ctrl + S(コントロールキーとsキーを同時押し)で保存します。
保存したら、メモ帳は閉じてもらっても構わないです。

そして、このUntitled.ahkを実行します。

  • 先ほどのエクスプローラでahkファイルの画面を残してある方は、ファイルをダブルクリックしてください。

  • 先ほどのエクスプローラでahkファイルの画面を消した方は、Windows(Windowsキー)を押して、Untitled.ahkと入力してください。そして、出てきたファイルをクリックして実行してください。

これでahkファイルが実行できました。テキストエリアに入力してみてください。

ahkファイルに追記した場合は、Ctrl + Sで保存した後、もう一度ファイルを実行しなおせば、追記の内容も反映されます。

保存してファイルを再度実行しても追記の内容が反映されていない場合は、
Ctrl + Shift + Escでタスクマネージャーを開き、
Autoと検索欄に入れると、"AutoHotkey Unicode 64-bit"が表示されると思います。
それを右クリックして、"タスクの終了"を押しましょう。
そして再度ファイルを実行すれば、追記内容も反映されていると思います。

ほかの例で、私が使っているものを書いておきます。

例えば

""(ダブルクォーテーション)

(個人的に)地味に単独で使うことがないダブルクォーテーション"ですが、こちらも自動補完にしてしまいましょう。

$"::
    SendInput "{}"{Left}
return

[定積分カッコ(?)]

[]の読み方なんですかね...
私は最近積分を勉強中なので、定積分カッコと呼んでいます(笑)

$[::
    SendInput [{}]{Left}
return

(特殊){}(波カッコ)

{}の場合は少し特殊ですので注意です。

${::
    SendInput {{}{}}{Left}
return

プラスα(再起動後でも使えるように)

Windowsをシャットダウンしてしまうと、ファイルの実行状況がリセットされてしまいます。
再起動後にいちいちahkファイルを起動するのは面倒ですよね?
ここでは、再起動後自動でファイルを実行してくれるように設定します。

  1. まずは、Win + Rで"ファイル名を指定して実行"画面を出します。
    そこに、shell:startupと入力して、"OK"を押してください。
    ファイル名を指定して実行

すると、エクスプローラが開き"スタートアップ"というフォルダの中身が表示されていると思います。
そのウィンドウは消さないでください!

  1. 次にWinキーを押して、"Untitled.ahk"入力してください。

表示されたファイルを右クリック、"コピー"を選択してください。

  1. そして、エクスプローラに戻り、スタートップフォルダに、先ほどコピーしたahkファイルをCtrl + Vでペーストしてください。

これで、再起動後に自動でファイルが実行されます。

少し注意

内容によっては「」(全角カギカッコ)にも反映されます。しかし全角は挙動がおかしく、
カッコ開を入力した後エンターを押さずに入力すれば、そのまま「」の中で書けます。
エンターを押せば「」の外に出ます。

感想

VSCodeを使ったことがある方なら、自動カッコ補完機能をどんなテキストエリアでも使いたいと思うのではないでしょうか? 実装してみました。
私は<>の自動補完もしていたのですが、C++等を触る人にとっては使いずらいと思ったので、例からは省かせていただきました。でもZennでHTMLを使って記事を書く人は、タグを書くときには便利なのかな~と思ったり...

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?