科学・技術

vimでの全選択方法は?コピーのやり方も解説(vi 全選択・vim 全選択 コピー・テキストエディタなど)

Vimでの全選択とコピーの基本操作
当サイトでは記事内に広告を含みます

Vimやviで文章全体を選択してコピーしたい場面では、マウス操作に慣れたテキストエディタとの違いに戸惑うことがあります。

しかし、Vimにはファイル全体を素早く扱うためのコマンドが備わっており、操作の意味を理解すれば編集や貼り付けの効率が大きく変わります。

この記事では、Vimで全選択してコピーする基本操作を中心に、ビジュアルモード、ヤンク、レジスタ、viとの違いまでわかりやすく解説します。

Vimでの全選択とコピーの基本操作

Vimでの全選択とコピーの基本操作

それではまず、Vimでファイル全体を選択してコピーする基本操作について解説していきます。

ノーマルモードから行う全選択

Vimで全選択を行う代表的なキー操作は、ノーマルモードで「ggVG」と入力する方法です。

最初の「gg」はカーソルをファイル先頭へ移動し、「V」は行単位のビジュアルモードを開始し、「G」はファイル末尾まで選択範囲を広げます。

つまり、ggVGは先頭から末尾までを行単位で全選択する操作です。

選択状態になったら「y」を押すことで、選択範囲をヤンクできます。

Vimでは一般的なアプリケーションでいうコピーを、ヤンクと呼びます。

全選択してVim内部へコピーする基本手順です。

Escでノーマルモードへ戻ります。

ggでファイル先頭へ移動します。

Vで行単位の選択を始めます。

Gでファイル末尾まで選択します。

yで選択範囲をコピーします。

挿入モードのままキーを押すと、文字として入力されてしまいます。

操作前にはEscを押し、ノーマルモードであることを確認する習慣が重要でしょう。

コマンド入力中に画面が大きく変わらなくても、選択中の行に反転表示が出れば成功しています。

文字単位とブロック単位の選択

「V」は行単位の選択ですが、用途によっては文字単位や矩形単位で選択したいこともあります。

小文字の「v」は文字単位のビジュアルモードであり、カーソル移動に合わせて必要な文字だけを選べます。

CtrlとVを同時に押す操作は、列方向に範囲を取るビジュアルブロックモードです。

表形式のデータや、複数行の先頭にある空白だけを編集するときに便利です。

開始キー 選択の種類 向いている場面
v 文字単位 文章の一部や単語だけをコピーする場面
V 行単位 複数行やファイル全体をコピーする場面
Ctrl+V 矩形単位 列をそろえた編集や同じ位置の文字を扱う場面

全選択に限れば「ggVG」が覚えやすく、設定ファイルやログを丸ごと扱う場合にも適しています。

一方で、行末の改行を含めずにコピーしたいときは、文字単位の「ggvG」を選ぶ余地があります。

Vとvの違いは、コピーされる範囲に行末の改行を含めるかどうかにも関わるため、貼り付け先に合わせて使い分けるとよいでしょう。

ヤンク後の貼り付け操作

コピーした内容をVim内で貼り付ける場合、カーソル位置の後ろへ入れるキーは「p」です。

カーソル位置の前に入れたい場合は「P」を使います。

行単位でヤンクしたデータは、pを押すと現在行の下に、Pを押すと現在行の上に追加されます。

文字単位でヤンクしたデータでは、カーソルの前後という意味合いがより明確になります。

全選択後にyを押しただけでは、WindowsやmacOSのクリップボードへコピーされたとは限りません。

まずはVim内部のレジスタに保存される仕組みを理解しておくと、貼り付け時の混乱を避けられます。

誤って貼り付けた場合は、ノーマルモードで「u」を押せば直前の変更を取り消せます。

貼り付け後に内容を確認し、不要ならすぐに戻せる点もVimの安心材料です。

ビジュアルモードと移動コマンドの組み合わせ

続いては、ビジュアルモードと移動コマンドを組み合わせる考え方を確認していきます。

先頭と末尾を指定する移動キー

Vimではカーソル移動のキーと選択キーを組み合わせることで、マウスなしでも広い範囲を正確に指定できます。

「gg」は文書全体の先頭、「G」は文書全体の末尾へ移動する基本コマンドです。

この二つを覚えるだけでも、長いソースコードや設定ファイルの閲覧がかなり楽になります。

数字を付けて「10G」と入力すると10行目へ、「50%」と入力するとファイルの中央付近へ移動できます。

移動コマンドは選択の終点を決める部品として使えるため、コピー以外の編集にも応用できます。

キー操作 移動先または作用 選択中に使った場合
gg ファイル先頭 選択範囲を先頭まで広げる
G ファイル末尾 選択範囲を末尾まで広げる
0 行頭 選択範囲を行頭まで広げる
$ 行末 選択範囲を行末まで広げる
w 次の単語の先頭 単語単位で範囲を広げる
} 次の段落付近 段落単位で範囲を広げる

たとえばファイルの先頭から現在位置までを選択したいなら、現在位置でVを押してからggを入力します。

現在位置から最終行までなら、VのあとにGを入力すれば十分です。

必要な範囲だけをヤンクできるようになると、コピー後に不要部分を削除する手間も減らせます。

範囲を選んだ後の編集コマンド

ビジュアルモードで選択した範囲には、y以外にも多くの編集コマンドを適用できます。

「d」は削除、「c」は変更、「>」はインデントを深くする操作、「<」はインデントを浅くする操作です。

選択した内容を別の文字列へ置き換えたいなら、「c」を押してから文字を入力します。

入力を終えた後にEscを押せば、変更内容が確定します。

ビジュアルモードでよく使う操作例です。

yは選択範囲のコピーです。

dは選択範囲の削除です。

cは選択範囲を削除して入力モードへ切り替える操作です。

=は選択範囲のインデント整形です。

コピーのつもりでdを押してしまった場合でも、削除された文字列は通常レジスタに残ります。

その直後ならpで戻せる場合がありますが、意図しない変更を防ぐにはキーの役割を少しずつ定着させることが大切です。

選択と編集を分けて考えると、Vimの操作は複雑に見えても整理しやすくなります

コマンドモードを使う全範囲指定

Vimにはビジュアルモード以外にも、コマンドラインモードで範囲を指定する方法があります。

「:%y」と入力すると、ファイル全体をヤンクできます。

先頭の「:」はコマンドラインモードの開始で、「%」はファイル全体を表し、「y」はヤンクです。

画面上で範囲を反転させずに全コピーしたいとき、またはコマンドを記録して再利用したいときに役立ちます。

特定の行だけなら「:1,20y」のように開始行と終了行を指定できます。

現在行から末尾までなら「:.,$y」と入力する書き方もあります。

コマンドラインの記号に慣れるまで時間はかかりますが、大量の行を正確に処理したい場合には非常に実用的です。

画面表示を見ながら選びたい場合はggVGyが向いています。

処理内容を短い命令として覚えたい場合は:%yが便利です。

どちらもファイル全体をヤンクする目的は同じなので、作業スタイルに合う方を選べます。

クリップボードとレジスタの仕組み

続いては、Vimでコピーした文字列がどこに保存されるのかを確認していきます。

Vim内部レジスタの役割

Vimではヤンクや削除した内容が、レジスタと呼ばれる保管場所に入ります。

何も指定せずにyを実行した場合、通常は無名レジスタへ保存されます。

その後にpを押すと、無名レジスタにある内容が貼り付けられます。

これはVimの編集画面内で完結するコピーであり、他のアプリケーションへそのまま貼り付けられるとは限りません。

テキストエディタとしてVimを使う際、内部コピーとOSのクリップボードコピーは別物と考えると理解しやすいでしょう。

レジスタ 用途 主な操作例
無名レジスタ 通常のヤンクや削除結果 yの後にp
名前付きレジスタ 内容を分けて保存 "ayyの後に"ap
システムクリップボード 他アプリとの共有 "+yの後に"+p
選択用クリップボード 一部のLinux環境で利用 "*yの後に"*p

名前付きレジスタを使うと、コピー内容を上書きしにくくなります。

たとえば「"ayy」は、aという名前のレジスタへ選択範囲をヤンクする操作です。

後で「"ap」と入力すれば、途中で別の文字列をコピーしていてもaの内容を取り出せます。

WindowsやmacOSのクリップボード連携

Vimからブラウザ、ターミナル、チャットツールなどへ貼り付けたい場合は、システムクリップボードを利用します。

多くの環境では、選択後に「"+y」と入力すると、OS側のクリップボードへコピーできます。

全選択と組み合わせる場合は、「ggVG"+y」と入力します。

コマンドライン方式なら「:%y+」ではなく、レジスタ指定を先に置く「:%y +」のような表記は環境差があるため、ビジュアルモードでの「"+y」を覚える方が確実です。

実際には、ノーマルモードでggVGを実行してから「"+y」を押すと、選択した全行を外部へ渡せます。

外部アプリへファイル全体をコピーする代表例です。

Escを押してノーマルモードにします。

ggVGで全行を選択します。

"+yでシステムクリップボードへヤンクします。

貼り付け先では通常のCtrl+VやCommand+Vを使います。

ただし、Vimがclipboard機能なしで構築されている場合、「+」レジスタが使えないことがあります。

特にサーバー上のviや最小構成のVimでは、クリップボード連携が無効なケースも珍しくありません。

「:version」を実行し、表示内容に「+clipboard」または「+xterm_clipboard」があれば、対応している可能性が高いです。

「-clipboard」と表示される場合は、別のVimパッケージ、GVim、Neovim、端末ソフトのコピー機能などを検討します。

端末上のコピー操作との使い分け

ターミナルでVimを開いている場合、端末エミュレータのマウス選択やショートカットで画面上の文字をコピーする方法もあります。

ただし、その方法では画面に表示されている範囲しか扱えず、折り返し表示やスクロール位置による影響も受けます。

ソースコード全体や長い設定ファイルを正確に取得するなら、Vimのヤンク機能を使う方が安定します。

端末のコピーは表示内容向け、Vimのヤンクは編集対象向けという使い分けがわかりやすい基準です。

外部クリップボードへのコピーがうまくいかないときは、操作ミスだけを疑う必要はありません。

使用中のVimの機能、SSH接続、端末ソフトの設定によっても挙動が変わります。

まずVim内部でpによる貼り付けができるか確認すると、原因を切り分けやすくなります。

viとVimとNeovimの操作差

続いては、vi、Vim、Neovimで全選択やコピーを行う際の違いを確認していきます。

viにおける基本的なヤンク

viはVimの元になったテキストエディタであり、基本的なノーマルモードやヤンクの考え方は共通しています。

環境によってはviというコマンドを起動しても、実体はVimまたはVim互換版になっていることがあります。

その場合、ggVGyや:%yが動作する可能性があります。

一方で、古いviや互換性を重視した実装では、ビジュアルモードが使えない場合もあります。

ビジュアルモードがない環境では、exコマンドの「:%y」を使う方法が有力です。

ただし、最小限のviではヤンクした結果を外部クリップボードへ送る機能まで備えていないことがあります。

サーバー上で設定ファイルを扱うときは、必要な部分を端末の選択機能でコピーすることもあります。

作業環境が何を提供しているかを確認してから、最適な方法を選ぶ姿勢が大切です。

Vimに備わる拡張機能

Vimでは、ビジュアルモード、複数のレジスタ、検索、置換、プラグインなどが充実しています。

そのため、単に全選択してコピーするだけでなく、必要な箇所を抽出してから別のファイルへ移す作業にも向いています。

たとえば検索した結果の周辺だけを確認し、行単位で選択してヤンクする流れは日常的な編集で役立ちます。

Vimのコピー操作は、編集の途中経過を柔軟に保持できる点に強みがあります。

種類 全選択の目安 外部コピー 特徴
vi :%yが中心 環境依存 軽量で基本機能を重視
Vim ggVGyまたは:%y clipboard機能により対応 機能と拡張性のバランス
Neovim ggVGyまたは:%y 設定やプロバイダーにより対応 現代的な拡張環境と相性がよい

普段使っているコマンドがviであっても、Vim互換なら基本キー操作を試せます。

動かなかった場合だけ、:versionやヘルプ画面で対応状況を調べる流れが効率的でしょう。

Neovimでのクリップボード設定

NeovimでもVimと同じように、ビジュアルモードで選択してyを押す基本操作を使えます。

OSのクリップボードと常に連携させたい場合は、clipboard設定を利用することがあります。

設定が有効なら、通常のyやpがシステムクリップボードと連動する環境も作れます。

ただし、チーム開発やリモート環境では設定内容が異なるため、どのレジスタへ入るかを意識しておくと安全です。

共通して覚えたい操作はggVGyです。

Vim内部で使うコピーなら、この操作だけでも多くの作業をこなせます。

外部アプリへ貼り付ける必要があるときだけ、"+yや環境設定を追加で確認します。

エディタの種類に関わらず、Escでモードを戻すこと、選択後にyでヤンクすること、pで貼り付けることは重要な基礎です。

まず共通部分を身につけると、別の端末や開発環境へ移っても対応しやすくなります。

全選択コピーで起こりやすいトラブル

続いては、Vimの全選択やコピーで起こりやすいトラブルと対処の考え方を確認していきます。

文字が入力されてしまうケース

ggVGと入力しても選択されず、そのまま文字が書き込まれる場合は、挿入モードにいる可能性があります。

Vimにはノーマルモード、挿入モード、ビジュアルモード、コマンドラインモードがあり、同じキーでもモードによって働きが変わります。

最初にEscを一度か二度押してから操作すると、ノーマルモードへ戻りやすくなります。

Escを押しても不安なら、画面下部の表示やカーソル形状を確認する方法もあります。

コピーが失敗したと感じたら、まず現在のモードを確認することが近道です。

日本語入力がオンになっていると、キー操作が期待どおりに認識されない環境もあります。

コマンドを入力する前に半角英数入力へ切り替えると、余計な文字の混入を防げます。

クリップボードへ貼り付けられないケース

Vim内ではpで貼り付けられるのに、ブラウザやメモ帳では貼り付けられない場合があります。

これは通常のyが無名レジスタへ保存しており、OSのクリップボードを使っていないためです。

この場合は「"+y」を使うか、clipboard機能を有効にしたVimを利用します。

Windows版のGVimや、クリップボード対応のVimでは解決する場合があります。

SSH接続先のLinuxサーバーで作業している場合、サーバー側のVimからローカルPCのクリップボードを直接扱えないこともあります。

端末アプリ側のOSC連携、tmuxの設定、SSHクライアントの機能などが影響するためです。

このような場面では、Vimで対象範囲を選び、端末のコピー機能を使う方法も現実的でしょう。

全選択後に意図せず内容を変更したケース

全選択後にyではなくdやcを押すと、選択範囲が削除または変更対象になります。

直後であれば「u」による取り消しで戻せるため、慌てずに操作を止めることが大切です。

複数回の操作を戻したい場合はuを繰り返し、戻しすぎた場合にはCtrlとRでやり直せます。

保存前であれば変更を破棄して終了する選択肢もありますが、未保存の作業を失うおそれがあります。

不安なファイルでは、コピー前に読み取り専用か編集対象かを意識する習慣が役立ちます。

誤操作時の基本的な対処です。

削除や変更をしてしまった直後はuで取り消します。

取り消しを戻したいときはCtrl+Rを使います。

保存前に内容を確認し、必要な場合だけ書き込み操作を行います。

Vimではコピーと削除が近いキーに配置されていますが、どちらも選択範囲をレジスタへ保存する点は共通です。

実際のファイルで練習する前に、空の一時ファイルでggVGy、p、uを試しておくと安心できます。

まとめ

Vimでファイル全体を選択してコピーする基本操作は、ノーマルモードで入力する「ggVGy」です。

ggで先頭へ移動し、Vで行単位の選択を開始し、Gで末尾まで広げ、yでヤンクします。

Vim内へ貼り付けるならpまたはPを使い、外部アプリケーションへ渡したい場合は「"+y」によるシステムクリップボードへのコピーを確認します。

最初に覚えるべき要点は、Esc、ggVG、y、pの流れです。

ビジュアルモード、レジスタ、viやNeovimとの違いも少しずつ理解すれば、Vimは単なるテキストエディタではなく、効率よく文章やコードを扱える編集環境になります。