web-dev-qa-db-ja.com

UNIX-VIで開いたファイルを使用して異なるbashウィンドウ間でコピーアンドペーストする方法は?

Bashにログインし、viでファイルを開いてから、alt-f2を使用して新しいターミナルを開いたとします。ログイン後、2番目のファイルに移動し、viで開きます。これら2つのファイル間でCnPを実行するにはどうすればよいですか?

wikia.comからこれを見つけました 。私はこのコマンドshift-8-y-yに精通していません。私はvimtutorに従い、仮想モードを使用します。このシーケンスを試しましたが、失敗しました。

そして、レジスターについてこれを読みました。 レジスターを「置く」または貼り付けるためにdouble_quote-pを使用するという言及を見つけましたが、これは別のファイルでは機能しません。 2番目のファイルはレジスタが空であることを報告しました。

または、VIMのドキュメントを読んで、分割画面で複数のファイルを開くことができます。これは解決策のコースかもしれません。頻繁に遭遇するニーズにより、別のbashでナビゲートする必要があります。ファイルを見つけるためのウィンドウ、次に2つの間でコピーしたい。一方、私が想像するのは、同じディレクトリ内のファイルに役立つ分割VIMウィンドウです。

4
xtian

あなたが持っているvimで標準的な一般的な方法でそれを支援なしで行うことはできません。

まず、適切なバージョンがコンパイルされ、ディストリビューションにインストールされていることを確認します。

次に、別々のウィンドウでgvimを使用するか、vim -oを使用して複数のファイルを開き、フレーム間で^W^Wを使用して切り替えてからコピーして貼り付けることをお勧めします。

1
Marius

それがあなたのためにうまくいかなかったのも不思議ではありません。コマンドのスペルを間違えています。そうではありません shift-8-y-y。また、そうではありません double_quote-p。コマンドは次のとおりです。

  • X11クリップボードへの現在の行のヤンク: "+yy
  • X11クリップボードから貼り付け: "+p
  • 現在の行をX11(プライマリ)選択にヤンク: "*yy
  • X11(プライマリ)選択から貼り付け: "*p

好みに応じてモーションパーツを変更します。もちろん、vimはXサーバーがそこにあることを知っている必要があります。したがって、Xサーバーがどこにあるか、およびDISPLAY環境変数などを暗黙的に継承するXセッション内から実行していない場合に使用するサーバー上の表示を明示的に指定する必要があります。 。

3
JdeBP

GUIなしでマウスのコピーアンドペーストを使用できる「汎用マウス」(gpm)パッケージをインストールすることをお勧めします。

1
CarlF

多くのGNU/Linuxディストリビューションに含まれているviは、X Window Systemのクリップボードへのインターフェイスなど、Vimの多くの機能なしでコンパイルされたVimの小さなバージョンです。ターミナルモードのvimプログラムでさえ、Xをサポートせずにビルドされることがよくあります。Xをサポートしないと、vivimはクリップボードにアクセスできなくなり、次のようになります。プログラムの異なるインスタンス間でコピーして貼り付けることができません。

これに対する1つの解決策は、-vオプションを使用して、ターミナルモードでgvimプログラムを実行することです。

$ gvim -v your_file

それを入力したり、入力し忘れたりしないように、毎回、次のエイリアスを〜/ .bashrcファイルに追加できます。

alias vim='gvim -v'
alias vi='gvim -v'

XをサポートするようにコンパイルされたバージョンのVimを使用すると、JdeBPの回答に記載されているコマンドを使用できます。これらのコマンドについては、Vimの内部ユーザーマニュアルおよびリファレンスマニュアルで次のコマンドを実行して読むこともできます。

:help 04.7
:help 09.3
1
garyjohn

コンソールを使用しているように見えるので(Xウィンドウがないため、他の多くの回答は関係ありません)、1つのvimセッションで複数のファイルを編集するだけで済みます。 :split ...を試して2つのファイルを一度に編集し、vimのカットバッファを使用してそれらの間でテキストを移動します。

または、gpmを使用して、コンソール間でカットアンドパスすることもできます。

1
Keith

Viについてはわかりませんが、emacsを使用すると、他の端末をemacsclientでプライマリemacsセッションに接続できます。そうすれば、それらはすべて同じキルリング(およびバッファーなど)を共有するため、キルできます。そしてそれらの間でヤンクします。

0
psusi