クリップボード編集による小さなライフハック

私はよくこの状況に遭遇します:自分で何か (たとえば、メールのウェブインターフェースの文字)にテキスト書いているのです 、突然、ある時点で何かをやり直す必要があります... これは、ブラウザ(およびそれ以上)での編集は、自動置換、正規表現、マクロなど、プログラマーにとってなじみのある便利さを意味しないために起こります。 同時に、テキストをバッファーにコピーして正しいエディター (Vim、Emacsなど)で編集することは難しくないようですが、コンテキストから離れて現在のタスクから気を散らすようなジェスチャーをしたくはありません... 、私はすでに手動でインデントしています(リストの番号付け、単語の置き換えなど)-結果は達成され、あまり時間はかかりませんでしたが、堆積物は残りました...



おなじみの状況? 答えが「はい」の場合、bashはオペレーティングシステム上で実行され、「エディター」という単語への最初の関連付けは「Microsoft Office」ではないため、猫の下で議論することがあります:)





そのため、エディタの高度な機能を既に習得している(さらには慣れている)場合は、これらの機能をできるだけアクセスしやすくする必要があるため、テキストを使用して作業する場合は、効果的にあなたのスキルを適用します。



この問題を解決するための最も明白な方法は、アクションのシーケンスの一部を単純に自動化することです。これは、時々変更することなく繰り返されます。 このようなシーケンスは2つあります。1つは外部エディターへの移行の開始時です- 選択、クリップボードへのコピー、外部エディターのオープン、貼り付け。 最後の2番目- 編集したものをバッファーにコピーし、外部エディターを閉じて、テキストを古い場所に貼り付けます。



しかし、まず第一に、クリップボードを使用して作業を自動化するという事実のために...



X Window Systemのクリップボードに関するいくつかのメモ。



(最初に、bashが機能するすべてのシステムが機能することを述べましたが、それは本当です。したがって、X Window Systemの機能とポピーが並行している場合は、この部分をスキップしてください。)



まず、X Windowのクリップボードは非常に具体的に実装されていることを忘れないでください。 プライマリ、セカンダリ、実際にはクリップボードの少なくとも3つのクリップボードがあります。 マウスで選択したものはすべてプライマリになり、マウスの中ボタンを押すと「抜け落ちます」。クリップボードは通常 Ctrl-V / Ctrl-Cです。 なぜ誰も二次的なものを必要としません



(実際、X Windowsはとてもクールなので、好きなだけ多くのクリップボードを持つことができるという噂があり、セカンダリーは無限のシリーズの1つにすぎません。これが必要な理由を推測することすら難しいと思います。)



第二に、クリップボードの内容はすべての瞬間に、それが抽出されたウィンドウに結び付けられていることを理解することは有用です。 確かに、このバインディングは多くの素晴らしい機会を開きますが、私の意見では、それらのすべては嫌な不便さによって無効にされます:クリップボードの内容は、コピー元のプログラムを閉じると消えます。



これらの機能を考えると、Linuxでのクリップボードの安定した予測可能な作業のために、ある種の「クリップボードマネージャー」を使用することを強くお勧めします。 KDEには完全に使用できるklipperが含まれており、Dwarfのユーザーにユーティリティパーセライトを勧めます(人々はまだdiodon、特にUbuntu + Unityを持っている人を賞賛しますが、私は試していません)。 どのマネージャーを使用するにしても、Ctrl-Alt-Cまたは別のキーの組み合わせを押してクリップボード履歴を呼び出すことに慣れるのは非常に便利です。 はい、ところで、「クリップボードを同期」オプションに注意してください-含めると、Ctrl-Cを使用して意識的かつ明示的に何かを追加した場合でも、テキストの選択はクリップボードの現在の内容を「上書き」します。



実際には、レシピ



したがって、目標を達成するには、(1)任意のコマンドの実行をマジックボタンの押下にグローバルにバインドできるツールと、(2)独自の構成の小さなスクリプトが必要です。



キーボードイベントへのバインドに関しては、多くのソリューションがありますが、システムに組み込まれたツールを使用しない理由はありません(KDEとGnomeの両方が独自のショートカットエディターを提供しています)。



イベントをバインドするスクリプト自体は、次のようになります。

  1. #!/ bin / bash
  2. tmp = " $(mktemp) " #一時ファイルを作成
  3. xclip -sel clip -o > " $ tmp " #クリップボードの内容を作成されたファイルにコピー
  4. gvim -f " $ tmp " #目的のエディターでファイルを開く(gvim-例として)
  5. cat " $ tmp " | xclip -sel clip #ファイルの内容をクリップボードにコピーします
  6. rm " $ tmp " #一時ファイルを削除
同時に、特定のユーティリティの選択はもちろん異なります。 たとえば、コマンドラインからクリップボードを操作できるのはxclipだけではありません。xclipの代わりにxselユーティリティまたはクリップボードマネージャーを使用できます。また、ポピーとOS Xがある場合は、pbcopy / pbpasteコマンドがあります。



さあ、次はささいなことです-スクリプトを〜/ bin / editclipに保存し、F12(または他のキーボードショートカット)を押すようにバインドします-完了です! 任意の「左」エディタで、必要なフラグメントを選択し、 「Ctrl-C、F12」押すと、フラグメントが目的のプログラムで開きます。閉じた後、 Ctrl-Vを押すだけで、編集したテキストが所定の位置に収まります。



最後に、X Windowに関するもう1つの小さなヒントです。 残念ながら、テキストの選択はプログラムの内部問題ではありません。 あるウィンドウでテキストを選択してから、別のウィンドウに切り替えて再度テキストを選択した場合、選択は元のウィンドウで飛んでしまう場合があります( upd:または飛んでいない場合があります-コメントでは、gtkプログラムは特にこの影響を受けやすいことを示唆しています)。 これは非常に不愉快です。選択を避けるためにあらゆる方法で外部エディターでテキストを編集する必要があるため(これは不自然です)、または最後にCtrl-Vを押すだけでは常に古いフラグメントが編集済みのフラグメントで置き換えられるわけではないことを受け入れるためです。



この不便を回避するために、私は通常「Ctrl- X 、F12」を使用して外部エディターを呼び出します-同時に元のテキストフラグメントがすぐに削除され、最終的にCtrl-Vを押すと編集されたバージョンがその場所に挿入されます。



以上です。 このトリックが誰かに役立つことを願っています。



All Articles