web-dev-qa-db-ja.com

Vimperatorのコピー/貼り付け

私は試しています Vimperator 。私は主にhjklスクロール用にそれが欲しかったのですが、リンクをたどるための「ヒント」システムが好きです。これらの2つの機能は本当に私が必要とするすべてです。おもう。

私は他の機能を気にしません、それは時々私の邪魔になります。

私をいらいらさせるのは、コピー/貼り付けです。私は慣れています Ctrlc/Ctrl+v、別のショートカットを使用してもかまいませんが、..

:help yankは、選択したテキストのコピーがYで行われることを示しますが、貼り付けるために言及されている唯一の方法は、マウスの中ボタンです!

これはVimの精神に非常にばかげています!

マウスを使わずにVimperatorに貼り付けるにはどうすればよいですか?

23
hasen

あなたができる最善かつ最も簡単なことは、キーを再マップすることです。それは難しいことではありません。これを_vimperatorrc(またはLinuxでは.vimperatorrc)に入れます

noremap <C-c> <C-v><C-c>
noremap <C-v> <C-v><C-v>

<C-v>はデフォルトで「Passnext」モードにマップされます。つまり、次に押すキーは、vimperatorによって処理されたり食べられたりすることなく、Firefoxに直接送信されます。したがって、上記のマッピングは「Pass next」モードをアクティブにし、それぞれのショートカットを送信するだけです。

これをさらに拡張し、すべての一般的なウィンドウショートカットを再マップするvimperatorプラグイン もあるので、期待どおりに動作します。

15
user4126

この質問に対してこれ以上正確な答えがなかったことに驚いています。選択した回答のプラグインリンクはOPの問題を解決しましたが、パススルー(C-v)モードを使用せずにテキストフィールドに何かを貼り付ける方法を実際に説明した人は誰もいませんでした。

INSERTモードのテキストフィールドにいて、何かを貼り付けたい場合、vi-landで行うべき明らかなことは、ESCとpを押して貼り付けることです。 vimperatorでは、これは機能しません。ESCを使用すると、INSERTモードが完全に終了し、ページ/タブ全体を操作するモードになります。

Vimperatorは、追加のBASICモードであるTEXTAREAを使用することでこれを解決します。モードTEXTAREAの場合、viで使用するサポートされているコマンドを使用できます。

Enter TEXTAREA mode: C-t
Paste:    p
Copy line:    yy
Delete Char:  x
Delete Line:  dd

等。

これは十分に文書化されていないようです-私はそれをほとんど間違って考えてしまいました。複数行のテキストボックスと単一行のテキストボックスで同じように機能します。

36
RevAaron

現在、vimperatorはCtrl + C(「コピー」から「キャンセル」)とCtrl + V(「貼り付け」から「パススルー」)の両方を再マップします。 Linuxでは、コピー/貼り付けの推奨方法はマウスの中央ボタンを使用するため、これは問題ではありません。 Windowsでは、これはユーザーインターフェイスの障害であり、修正する必要があります。

コピー元には、Webページのテキスト、フォームフィールドのテキスト、外部アプリケーションのテキストの3つがあります。コピーする場所は2つあります。フォームフィールドと外部アプリケーションです。アドレスバーとコマンドバーはフォームフィールドのように機能します。

Copying from...
     A web page: 'Y' works, '^C' doesn't
     Form field: 'Y' doesn't work, '^C' does
     Extern application: 'Y' doesn't work, '^C' does
  Copying to...
     Form field: '^V' doesn't work, '^V,^V' does
     External application: '^V' works, '^V,^V' pastes twice
 Or, seen another way
       Copy  Paste
 Page  Y     N/A
 Form  ^C    ^V,^V
 App   ^C    ^V

通常のユーザーはそのテーブルを覚えません。明示的に文書化されていないため、彼らはそれを理解することは決してなく、たとえそうであったとしても、彼らはそれを読まないでしょう。代わりに、どこでも機能する唯一のものである右クリックメニューを使用します。実際、Vimperatorを使い始めてから数週間後、まったく関係のないアプリケーションで、これまでやったことのないことをしていることに気づきました。

^ Cと^ Vを元の正当な機能にコピーアンドペーストとして復元する必要があります。つまり、^ C =キャンセルと^ V =パススルーホットキーを置き換えます。実際、これらのホットキーは両方ともvimperatorに固有であり、vimには表示されません。 ^ Vはvimで「ブロックビジュアル」を意味しますが、これはvimperatorには適用されないため、パススルーを他のキーに簡単に割り当てることができます。コマンドモードではバックスラッシュを使用し、コマンドモードと挿入モードの両方でCtrl +バックスラッシュを使用することをお勧めします。それは^ Cを残します。 ^ Sに移すべきだと思います。これには2つの優れたニーモニックがあります。それは「停止」であり、XOFFのUnixホットキーでもあります。これは役に立たないが意味的には似ています。 ^ Sは現在、vimperatorで「名前を付けてページを保存」しています。これはめったに使用されず、:saveまたは:saveasを使用してアクセスできます。

元に戻すも壊れています。これは^ Zでしたが、^ Zはパススルーモードではなく、マウスを使用せずにフォームフィールドでの編集を元に戻す方法はありません。特にvimの^ Zはサスペンドを意味するため、これを別のホットキーに移動しない理由はありません。サスペンドは完全に無関係であり、予期せずにパススルーモードで自分自身を見つけるのは非常に混乱します。これを変更するための任意ではないホットキーは考えられませんが、^ Zはそもそもかなり恣意的だったので、未使用のホットキーであれば問題ありません。

ソース: http://www.mozdev.org/pipermail/vimperator/2008-October/002359.html

13
joe

私はしばらくの間これを行う方法を探していました。良いですね。しかし、joeが指摘しているように、コマンドラインまたはテキストボックスに貼り付けたい場合、user4126のnoremapソリューションは完全ではありませんでした。だから私はそれをinoremapで微調整し、cnoremapも http://charlieharvey.org.uk/page/vimperator_cut_and_paste でやりすぎました。 vnoremapがサポートされているようには見えません。

したがって、ctrl-vショートカットを1回だけ使用することで、コマンドラインとテキストボックスに貼り付けることができます。以下を.vimperatorrcに貼り付けて、Firefoxを再起動します。

noremap <C-v> <C-v><C-v>
inoremap <C-v> <C-v><C-v>
cnoremap <C-v> <C-v><C-v>

noremap <C-c> <C-v><C-c>
inoremap <C-c> <C-v><C-c>
cnoremap <C-c> <C-v><C-c>
2
Charlie

答えがわからないので、役に立つ回答が見つからなかった Ctrl+c どこでも。私がやっていることは、SecureCRTショートカットを使用することです。つまり、ページからコピーする場合:

Ctrl+Ins

貼り付けの場合: Ctrl+V 2回(誰かが他の場所の回答で言っているように)。

2
user31264

簡単な答えの場合-^ V ^ V(つまり、Ctrl-V Ctrl-V)

最初のCtrl-Vは「次のキーストロークパススルー」を行います。 2番目のCtrl-Vはテキストを貼り付けます。これは、ほとんどのテキストフィールドで行うことです。

複数行テキストフィールドにviモードを使用する場合(noinsertmodeを設定)、pを使用して貼り付けることもできます。このタグに別のタブのURLを貼り付けたい場合は、そのタブに移動し、yを使用してから、このタブ。ブラウザの下部のバーに--TEXTAREA--と表示され、pを押してURLを貼り付けることができます。

1
Hamish Downer

完全なvim体験よりもマウスレス体験をしたい場合は、以下を試してください。

1
facepalmd

私は使用することをお勧めします

map <C-c> <C-v><C-c>
noremap <C-v> <C-v><C-v>

外部テキストエディタを開いた場合、FFウィンドウで単純なC-cを実行すると外部エディタが終了し、すべてが失われるためです。

BR

0
MaikoID