質問

VIエディターで開いているファイルからクリップボードにすべての行をコピーする方法はありますか。 y G を試しましたが、クリップボードを使用してこれらの行を保存していません。

それで可能ですか?

役に立ちましたか?

解決

*または+ 登録

g g <!> quot; * y G

説明:

  • ggカーソルをファイルの最初の文字に移動する
  • "*yは、最初の行からレジスタGへのyankコマンドを開始するまで...
  • <=>ファイルの終わりに移動する

他のヒント

使用:

y +

すべての行をヤンクします。

説明:

  • %すべての行で機能する次のコマンドを参照する
  • yこれらの行をヤンクする
  • +システムのクリップボードにコピーします

NB :Windowsでは、*と<=>は同等ですこちらの回答を参照

Macの場合

  • 選択した部分をコピー:テキストを視覚的に選択します(通常はvまたはV モード)を入力し、:w !pbcopy

  • と入力します
  • ファイル全体をコピー:%w !pbcopy

  • クリップボードから貼り付ける:r !pbpaste

クリップボードはバッファー + です。クリップボードにコピーするには、 <!> quot; + y および[movement]を実行します。

したがって、 g g <!> quot; + y G はファイル全体をコピーします。

同様に、クリップボードから貼り付けるには、 <!> quot; + p

VIの使用に問題がある場合にファイル全体をコピーするもう1つの簡単な方法は、<!> quot; cat filename <!> quot;と入力するだけです。ファイルを画面にエコーし、上下にスクロールしてコピー/貼り付けするだけです。

これはファイル全体をヤンクするために私がすることです:

ggVGy

(@ rshdevへの返信で、OPのコメントで@nelstromごとに+ xterm_clipboardでvimを再コンパイルする必要を回避するため)

Ubuntu 11でputclipのように動作するxclipというプログラムがあります:

:%!xclip -sel clip
u

デフォルトではインストールされません。インストールするには、次を使用します。

sudo apt-get install xclip

Ubuntu 12で

vim-gnome パッケージをインストールしようとする場合があります:

sudo apt-get install vim-gnome

試してみたのは、クリップボードを使用するために必要な xterm_clipboard フラグが無効になる(-で示される)ことをvim --versionから聞いたからです機能。

-<!> gt; Ubuntu 12に vim-gnome パッケージをインストールすると、コンソールベースのvimもインストールされ、このオプションが有効になります(xterm_clipboardフラグの前に + で示されます)

Arch Linuxの場合

同じ理由で vim-clipboard をインストールできます。

<!> quot; cat <!> quot;を使用できます。ファイルを開き、マウスを使用してコピーするコマンド

Vimをビジュアルモードで使用している場合、少なくともWindowsでは、標準のカットアンドペーストキーも適用されます。

  • CTRL A は、<!> quot;ファイル全体をマークすることを意味します。
  • CTRL C は、<!> quot;選択範囲をコピーします。
  • ESC は<!> quot;選択解除を意味するため、次のキーを押してもファイル全体が置き換えられません:-)

少なくともUbuntuターミナル(Gnome)では、標準コピーも機能します( CTRL SHIFT C select allの標準キーボードショートカットである( ALT E の後に A が続く)。

ggを押してカーソルをファイルの先頭に移動し、yGを押してすべてのコンテンツを先頭から末尾(Gにある)までバッファにコピーします。幸運を祈ります!

私は、人々が上で言及したいくつかのコマンドを試しました。なし。 それから私はそれらの中で最も単純なものを手に入れました。

ステップ1:vi <filename>
ステップ2:Puttyウィンドウのタイトルバーを右クリックします
ステップ3:<!> quot; Clear scrollback <!> quot;を選択します。 (SSHセッションの残りのコピーを避けるため)
ステップ4:もう一度右クリックして、<!> quot;クリップボードにすべてコピー<!> quot;を選択します。

:%y aすべてのコンテンツをvimのバッファーにヤンクし、 コマンドモードでpを押すと、カーソルが現在立っている行の後に、ヤンクされたコンテンツが貼り付けられます。

gVim:

:set go=a

g g V G

:help go-aを参照:

'a' Autoselect:  If present, then whenever VISUAL mode is started,
 or the Visual area extended, Vim tries to become the owner of
 the windowing system's global selection.  This means that the
 Visually highlighted text is available for pasting into other
 applications as well as into Vim itself.  When the Visual mode
 ends, possibly due to an operation on the text, or when an
 application wants to paste the selection, the highlighted text
 is automatically yanked into the "* selection register.
 Thus the selection is still available for pasting into other
 applications after the VISUAL mode has ended.
     If not present, then Vim won't become the owner of the
 windowing system's global selection unless explicitly told to
 by a yank or delete operation for the "* register.
 The same applies to the modeless selection.

<!> quot; clipboard <!> quotの概念はありませんでした。ビルジョイのviにありますので、組み込みの方法はありません。

gVimのクリップボードへのハイライトされた自動コピー機能は、最も簡単です。または、外部プログラムを使用してください:!

Cygwinのvimには

を使用します
:%!putclip
u

UbuntuにはputclipのようなCLIアプリがありますか?

まあ、これらのアプローチはすべて興味深いですが、怠zyなプログラマーとして、数字+ y

の組み合わせを使用してすべての行をヤンクします

たとえば、合計78行のソースコードファイルがある場合、次のように実行できます。

  1. ggカーソルを最初の行に取得するには
  2. 挿入78 + <=>-<!> gt;カーソルの下の78行と現在の行をヤンクします

指のデフォルトがCTRL-A CTRL-Cの場合、$VIMRUNTIME/mswin.vimからのマッピングを試してください。

" CTRL-C and CTRL-Insert are Copy
vnoremap <C-C> "+y

" CTRL-A is Select all
noremap <C-A> gggH<C-O>G
inoremap <C-A> <C-O>gg<C-O>gH<C-O>G
cnoremap <C-A> <C-C>gggH<C-O>G
onoremap <C-A> <C-C>gggH<C-O>G
snoremap <C-A> <C-C>gggH<C-O>G
xnoremap <C-A> <C-C>ggVG

<Leader><C-a>および<Leader><C-c>にマッピングします。

vimまたはそのタブ内のファイル全体をコピーします

y G 

次にタブに移動して貼り付けます

p

そして使用するファイル全体をカットする

d G

CTRL + a を使用してクリップボードのすべてを選択するマップコマンドです:

"
" select all with control-a
"
nnoremap <C-a> ggmqvG"+y'q

それを .vimrc に追加すれば、準備完了です...

この10年は解決されるはずですが、最初の2つの答えはうまくいきませんでしたので、掘り続けました。 Redhat(リモートサーバー)-Windows 10(ローカルマシン)では、マウスですべてを選択できない場合、リモートとローカルマシンのクリップボード間で通常のコピーが機能しないため、スタックしています。

したがって、リモートLinuxにコピーしてローカルWindowsに貼り付けるには、 * でプライマリバッファーを指定し、素敵なダブルヤンク

を実行します

g g <!> quot; * y y 。

.vimrcに次の行を追加しました

nnoremap <F5> :%y+<CR>

これにより、F5を押して(コマンドモードで)Vimのすべてのテキストをクリップボードにコピーできます。

上記の回答を使用してファイルをコピーできませんでしたが、パテがあり、Quoraで回避策を見つけました。

  1. PuTTYセッションの設定を変更し、ロギングに移動して<!> quot; printable characters <!> quot;に変更します。ログファイルを設定します
  2. それぞれのファイルの猫をやる
  3. ステップ#1で設定したファイルに移動すると、ログファイルにコンテンツが保存されます。

注:そのセッションのすべての印刷文字をログファイルにコピーするため、最終的に大きくなります。その場合は、ログファイルを削除し、対象ファイルをcatして、その特定のファイルのコンテンツがマシンにコピーされるようにします。

このアクションを実行する関数を作成し、それを〜/ .vimrc に配置します。

fun! CopyBufferToClipboard()
    %y+
endfun
nnoremap <Leader>y :call CopyBufferToClipboard()<CR>
command! -nargs=0 CopyFile :call CopyBufferToClipboard()

OBS:neovimを使用している場合、xclipなどのクリップボードマネージャーも必要です。 neovim :h checkhealth

の詳細情報タイプ

すべてのコピーフィードを + が&quot; Clipboard Register&quot;になるように、単純な y が常にクリップボードにコピーされるわけではないことを言及することも重要です。設定してみてください::set clipboard = unnamed、unnamedplus 。詳細については、:h unnamed を参照してください。

こちら vim wikiaの詳細情報

マウスの左ボタンをクリックして、コピーおよびリリースするセクションをドラッグします。コードは自動的にクリップボードにコピーされます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top