超高速コピー/貼り付けコードスニペット

常にC ++ / Qtでプログラミングしているので、コードスニペットをどこかに保存して、 すばやくアクセスできる方が便利だと思いました。 もちろん、私は検索を開始し、多くの既製のオーガナイザープログラムとサイトを見つけました。 私はそれらを試してみましたが、これはすべて私には合いませんでした。



すぐにアクセスできるようにしたかったため、グローバルホットキーが必要でした。 クリックして-検索に単語を入力して-コードを受け取りました。 しかし、このような機能を備えたプログラムは2つだけで、クロスプラットフォームではなく有料でした。



したがって、私はQtでプログラムを書くことを約束しました。 非常に便利であるため、それなしでコーディングを想像することはできず 、もちろんそれを公開することにしました。 カットの下で、私が解決しなければならなかった問題とタスクについて話し、私の経験をレイアウトし、プログラム自体とそのソースコードの概要を説明します。





開発履歴

そもそも、プログラムは小さく、便利でスマートでなければなりません。 つまり、プログラムをトレイに入れて、タスクバーに干渉しないようにする必要があります。 幸いなことに、Qtはこれに便利なクロスプラットフォームソリューションをQSystemTrayIconクラスの形式で提供します。 また、プログラムは必ずグローバルホットキーで動作する必要があります。 ここで問題が発生しました! 事実、Qtは、残念ながら、すぐに使用できるものではサポートされていません。 これがlibqxtライブラリです。これは、Qt 4.8の下でほぼ1年間使用できました。 しかし、Qt 5では、何らかの理由で私が理解していなかったため、彼らは(その時点で)正常に終了せず、Win7では彼女は集まりたくなかったため、このベンチャーを辞めました。 代わりに、RegisterHotKey関数のwinApiへの呼び出しという非常に小さなネイティブコードを挿入しました。 これはプログラムの唯一のネイティブ挿入です。LinuxまたはMacで変更するのは非常に簡単だと思います。



コードをXMLデータベースに保存することにしました。 これは最善の解決策ではないかもしれませんが、それでもタスクに対処できます。 とにかく、私はそれに慣れました。



エディターの基礎として、もちろんQTextEditを使いました。 ここで嬉しい驚きがありました-QtCreatorからコピーされたコードは、マークアップ付きのHTMLとしてコピーされ、そのため構文が強調表示されます。 すぐに、C ++ \ Qtの組み込み構文強調表示を記述する必要性は、それ自体でなくなりました。 QtCreatorには、特に自分でカスタマイズする場合に、非常に優れた構文強調表示機能があります。



さらに、コードをウィンドウに挿入することがすでに可能であり、データベース、そしてxmlファイルに進むと、それを便利かつ迅速に取得する方法について疑問が生じました。 これを行うために、スペースで区切られたすべての単語が見つかるコードの断片を探す小さな検索エンジンを作成しました。 それで十分ですが。 私の個人データベースには、すでに約100個のコードフラグメントがありますが、それでも、その中の1つとして、私は優れた指向を持っています。



キーワードも作成しました。 さて、彼らなしでは何ですか? 検索はメインコードだけでなく、メインコードによっても実行されます。 keiでは、この貼り付けが属するプログラミング言語を指定できます。たとえば、「c ++、qt」または「qml、js」です。 検索の結果、複数の言語のコードフラグメントが見つかった場合、キーワード言語を追加することでそれらを区別できます。



プログラムを完成させている間、 GIMPeにロゴ(中括弧)を描きました。 シンプルで明確。



プログラムの概要

プログラムのWindowsディストリビューションをここからダウンロードするか、 githubからダウンロードしてソースからコンパイルできます。 多くの場合のように、デスクトップに展開しないでください。 配布は、すべてのdllとともに、パック形式で16 MB、アンパック形式で40 MBの重さです。Qt5は非常に太く、最も単純なプログラムでもライブラリのホスト全体に沿ってドラッグする必要があります。 しかし、特にプログラムの速度に影響を与えないため、これは問題ではないと思います。



プログラムをディスク上の任意のフォルダーに解凍し、実行します。 彼女はconfig.xml構成ファイルを自分のフォルダーに作成し、保存すると、base.xmlコード用のクリーンなデータベースを作成します。 実際、メインメニューは、記事タイトルの画面に表示されるように見えます。 プログラムのインターフェースはこれまでのところすべて英語であるため、一部のシステムではアセンブリに問題はありません。メッセージと署名は今のところソースコードにあります。



新しいコードフラグメントの追加は、グローバルホットキーctrl + Dによって実行され、検索はwin + Vによって実行されます そのような「グローバルな」ホットキーのために私に石を投げることができますが、実験はそれらが最も便利であることを示しました。 はい、おそらくctrl + Dを使用してQtCreatorからコードを送信することに慣れているでしょう。 これが非常に重要な場合は、CodePasterクラスのコンストラクターに移動して、そこにあるホットキーを自分に合ったものに変更できます。 将来、これはGUIを介して実行できます。



続けましょう。 便利なアルゴリズムを作成したか、毎回印刷したくない新しい言語デザインをマスターしたとします。 お気に入りのIDE(作成者など)でコードブロックを選択するだけで、通常どおりctrl + Cでコピーします。 それはすぐに便利で非常に近くなります-ctrlをリリースすることなく-Dをクリックします。IDEの上にウィンドウがポップアップします-そしてコード自体がそこに飛び込みます! プログラムは自動的にクリップボードを読み取り、そこからコードを貼り付けます。 ここにはさらに2つの小さな機能があります。コードの前にコメント「//」の形で署名が挿入され、コード自体から余分なインデントが削除されます。 つまり プログラムの中央からコピーした場合、停止するまで左に移動します。



「OK」をクリックするだけで、コードはすでにデータベースにあります! さらに、障害が発生してもデータが失われないように、すぐにハードディスクに保存されました。



次に-このコードをすばやくコピーしたい場合-win + ctrlを押します。 なぜ彼は正確に? 私には便利なオプションのようで、どこにも関与していません。 小さなコード検索エンジンが表示され、そこから必要なフラグメントをコピーできます。 検索エンジン自体に関しては、各コードにはコンテキストメニューがあります。 データベースから削除したり、編集したり、プロパティを表示したりできます。





ご覧のとおり、コードフラグメントは「---」で区切られ、それぞれに独自のIDと小さなパンがあります。プログラムは、追加された日付とコピーされた回数を記憶しています。



QTextEdit内のテキストブロックをCodeオブジェクトにマッピングするために少し作業をしなければなりませんでした-検索を更新すると、「マップ」が形成されます-特別なオブジェクトのリスト。



ところで、プログラムはコードだけでなく、一般的にあらゆるテキストに使用できます。 たとえば、メールボックスと電話のスコアリングに成功し、必要に応じてコピーします。 すばやくアクセスして検索できるメモ帳のようなものになります。



プログラムを使用する簡単な例を示しましょう-デバッグのためにプログラムにメッセージボックスを突然表示する必要がある場合(qDebug出力ではない)-事前にコードを準備して、win + Vを入力し、「mes」でドライブする-これで必要な部分を見つけるのに十分ですコードを作成してコピーします。 ホットキーのクリック1回、3文字のセット、Enter(後で削除可能)、および選択コピーを使用します。 では、同じアシスタントからコピーするのにどれくらいの時間を費やしますか? グローバルホットキーにある場合でも、選択またはキーを介して検索バーのフォーカスを選択し、そこに「混乱」と入力し、マウスで目的のクラスを選択し(!)、例がある場所(ある場合)までスクロールダウンしてからコピーする必要があります彼。 これは少なくとも2倍長くなります。 Qt Assistantは完璧なドキュメントですが、常に使用されるコードのコピーペーストには適していません。



他にどんなオプションがありますか? 毎回pastebinに立ち寄って、そこを見ますか? これも余分な遅延です。 Googleで同じクエリを100回入力しますか? しかし、私がこのテーマについて話し合ったプログラマーのほとんどはそれをしました。彼らは毎回グーグルでした。 しかし、私は一度それを見つけました-あなたはそれを迅速なアクセスのために何らかの種類の「キャッシュ」に保存し、必要に応じて変更し、健康のためにそれを使用することができます! このキャッシュは、利便性を高めるためにシステムとうまく統合されたプログラムでなければなりません。



別の例を挙げます。 私はよくprog.org.ruフォーラムに座って、さまざまな小さな問題に対する多くの優れた解決策を常に見つけています。 たとえば、QSettingsを使用してWindowsスタートアップにプログラムを追加する方法。 または、UIフォームを動的にロードする方法。 アルゴリズム全体があります。 私が一度見つけた何かを見つけるたびに-これは快適ではありません。 優れた美しいソリューションは、将来の使用のために自分で保管しておくと便利です。



別の例-Windows環境変数に変数を追加するbatファイルのコードを保存したことがあります。 必要な場合-不便なGUIを使用する代わりに、コマンドラインにコピーするだけです。



もちろん、コードの断片をファイルに保存することも提案できますが、迅速なアクセスと検索、およびそのようなファイルの便利な編成について疑問が生じるとすぐに、これは最善の解決策ではないことがわかります。 もちろん、大きなコード(ライブラリとクラス全体)はそのように保存する必要がありますが、私たちはよく使用する小さな断片について話します。



一度に複数のプログラミング言語で作業する場合、そのようなプログラムを使用する利点はさらに重要になります。 特定の言語でこのデザインやデザインがどのように見えるかを忘れることができます。また、検索することで覚えやすくなります。



ソースコードの概要

私は、 Qt Coding Style標準でソースコードを一生懸命書きました。 ときどき、C ++ 11コンストラクトを使用しました。 それを読むとき、問題はないと思います。 すべてのウィンドウはウィジェットに基づいていますが、それらをQMLに変換する予定です。



一般的に-厳密に判断しないでください。 これは私の最初の公開プロジェクトであり、少なくとも誰かがプログラムではないにしても重宝することを願っています。 プログラムが本当に有用であることが判明し、あなたがそれを追加しているなら、私はそれを修正することができます。 計画は、それをさらに便利にすること(アイデアがあります)、他の言語の構文の強調表示、Linux \ Macのホットキーのサポートです。



また、記事またはコードのどこかにタイプミスやエラーがある可能性を排除しません。 良い批判を受け入れてうれしいです。



だから-私はあなたのフィードバックを待っています!



All Articles