私の経験に関する最新の更新
0"+y$dd次のマッピングの部分は、実際に慎重に検討し、好み、ワークフロー、経験に合わせて調整する必要がある部分です。
たとえば、非常に頻繁に私は自分がバッファ内の複数の行で終わることに気づき、カーソルが置かれている行のみを実行したいと思っています。この場合、の0"+y$dd:%d<CR>代わりに使用できます0"+y$dd。
そして、これは可能なシナリオの1つにすぎません。
好きな人のための最終的な答え vim
- /
vimとして設定すると、コマンドラインを編集するときにを使用して編集できます。EDITORVISUALvim
- 「現在の行を末尾のEOLなしでレジスターに削除する」アクションにマップ
au BufEnter /tmp/bash-fc.* nn <Leader>d 0"+y$dd:wq<CR>する~/.vimrcファイルLeaderd(コマンドの編集時にはほとんど使用しません)を入れます+。
vimエディターでのコマンドの編集が終了したら、を押しEscapeLeaderdます。
- クリップボードをターミナルに貼り付けます(これはターミナルに依存します)。
元の答え
私はしばしば同じことをする必要があります、そして私は次のようにそれをします。(私は通常、使用set -o vi中にbashあなたが使用している場合、以下の点1と2が異なっているので、set -o emacsそれはで統一されているポイント1及び2のように見えるあなたの質問に基づいて、デフォルトCtrl+ xに続くCtrl+ e入力するのは難しいです、私見。)
- Escape通常モードになるためにヒット、
- ヒットvコマンドを編集するエディタを入力し、
- 好きなようにコマンドを編集し、
(ここで質問します。)
- ヒットEscape0"+y$dd:wq、
- 注:0"+y$単に"+yyではなく、後者は改行もコピーし、コマンドラインに貼り付けるとコマンドが実行されるため、
- クリップボードをコマンドラインに貼り付ける
- これを行う方法は、使用している端末によって異なります。私はヒットCtrl+ Alt+ vの中で
URxvt。
- 承認/手動編集に進みます。
明らかにこれは単なる回避策であり、編集されたコマンドをコマンド全体を削除する前にクリップボードにコピーすることで構成されているため、エディターを終了しても何も実行されません。しかし、それは私が自分で得ることができる最高のものです。
更新
私EDITOR(およびVISUAL)はに等しいのでvim、コマンドを編集するときはで編集しvimます。
この点で、バッファの名前がであることに気づきました/tmp/bash-fc.random。ここrandomで、は6文字の英数字のランダム文字列です。
シーケンス全体を実行するためにvimマッピングを定義できるため、エディターとして使用する場合、これにより多くの可能性にスペースが与えられます。たとえば、コマンドラインの編集時にほとんど使用しないコマンドは次のとおりです。したがって、次のpingをファイルに入れることができます.vimrcEscape0"+y$dd:wqLeaderdmap.vimrc
au BufEnter /tmp/bash-fc.* nn <Leader>d 0"+y$dd:wq<CR>
上記のレシピのステップ4が
- ヒット EscapeLeaderd
edit-and-execute-command。