header image
  • プログラム・ソフト
  • 物理学・工学
  • ガジェット
  • 当サイトについて
  • お問い合わせ
  • プログラム・ソフト
  • 物理学・工学
  • ガジェット
  • 当サイトについて
  • お問い合わせ
  • HOME
  • プログラム・ソフト
  • Vim
  • Vim (Vi)でコピー&ペーストするコマンドまとめとエディタ外部間で行う方法

Vim (Vi)でコピー&ペーストするコマンドまとめとエディタ外部間で行う方法

投稿日:2020年9月13日 更新日:2022年6月15日

  • Tags: [コマンド集], [テキストエディター], [使い方],

サムネイル

Linuxでは標準的なテキストエディター、Vim(Vi)ですが、使い方に慣れるまで苦労しますよね。
テキストを入力するだけであれば挿入モードに入ってしまえば良いですが、コピペするにはコマンドを入力しなければなりません。

そこで本記事では、よく使うコピペのコマンドを紹介します。
加えて、テキストエディター外への貼り付け、エディター外からの貼り付けする方法もまとめました。
コピペ以外のコマンドは下記にまとめてあります。

>> 【動画あり】Vimのコマンドを一覧にまとめてみた
>> Vimで便利な小技(よく使うコマンド集)

とりあえずVim (Vi)を最低限使いたいという初心者の方は下の記事が参考になるかと思います。
>> 【超初心者向け】Vim(Vi)でなんとかファイル編集する方法

  • エディター内でコピペ
    • 基本
    • コピー(ヤンク)コマンド一覧
    • ペースト(プット)コマンド一覧
  • エディター外との間でコピペ
    • 手っ取り早く行う方法
    • Vimのコピーでクリップボードに入れる
      • クリップボード使用のための設定①
      • クリップボード使用のための設定②
      • Vimのコピー・ペーストコマンドで外部とやりとりする
  • まとめ

エディター内でコピペ

基本

Vimのエディター内でコピペする一番の基本は、以下のコマンドになります。

エディター内のコピペの基本

yyp : ノーマルモードで1行コピー&ペースト

yyで一行コピー、pでカーソル下の行にペーストとなります。

yyの部分のコマンドを変えることでコピーの範囲を変えられ、pの部分のコマンドを変えることでペーストする場所や数を変えることができます。
よく使うものを下にまとめました。

コピーコマンド

コピー(ヤンク)コマンド一覧

コピーする範囲に対応したコマンドがいろいろとあります。
その中でもよく使うものをピックアップしました。

コマンド操作
yy1行コピー
3yy3行コピー(カーソル行+下2行)
yGカーソルから下の行すべてをコピー
yggカーソルから上の行すべてをコピー
y0カーソルから左側をコピー
y$カーソルから右側をコピー
v → (文字単位で範囲選択) → y選択した範囲をコピー
V → (行単位で範囲選択) → y選択した行をコピー

これらのコマンドはすべてyを基準としたコマンドで、範囲指定のためにさまざまなコマンドへと派生しています。
このようなVimコマンドの仕組みについては、下の記事にまとめています。

>> Vimのコマンドの表記とコマンドの基本構造(オペレーターとモーション)

ペーストコマンド

ペースト(プット)コマンド一覧

コピーまたは切り取りをした文字を貼り付けるためのコマンドは2種類あります(貼り付け場所がカーソルより前か後か)。
直前に数字を入力しておくと、ペーストする回数を指定できます。

コマンド操作
p (小文字)カーソル右にペースト(行をコピーしたときはカーソル下に)
P (大文字)カーソル左にペースト(行をコピーしたときはカーソル上に)
3p (小文字)カーソル右に3回ペースト(行をコピーしたときはカーソル下に)
3P (大文字)カーソル左に3回ペースト(行をコピーしたときはカーソル上に)

エディター外との間でコピペ

手っ取り早く行う方法

基本的に初期の状態では、Vimコマンドでのコピー(ヤンク)は、メモ帳やブラウザなどの他のソフトに貼り付けできません。
その逆(他のソフトからVimへ)も然りです。
これをできるように設定するには、「Vimのコピーでクリップボードに入れる」以降を参照ください。

しかし設定不要で、手っ取り早くVimとそれ以外のソフト間でコピー&ペーストをする方法もあります。
端末(ターミナル)によってはやり方が違うかもしれません。

Vim → 外部のソフト

  1. Vimテキストのコピー  : 左クリックで範囲をドラッグし、右クリック→”コピー”選択(または Ctrl + Shift + c)
  2. 外部ソフトへペースト  : 右クリック→”貼り付け”選択(または Ctrl + v)

外部のソフト → Vim

  1. 外部ソフトのテキストのコピー  : 左クリックで範囲をドラッグし、右クリック→”コピー”選択 (またはCtrl + c)
  2. Vimへペースト  : 右クリック→”貼り付け”選択(または Ctrl + Shift + v)

実は上記のように結構単純な方法で、外部とコピペできます。
注意点としては、Vimのテキストをコピーするときに、Vimのカーソルは無視されますので、マウスドラッグで作られる領域にのみコピーされます。
Vimに貼り付けるとき、改行等がおかしくなるときは、挿入モードに入って(ノーマルモードでi)から貼り付けるとうまくいくことがあります。

Vimのコピーでクリップボードに入れる

Vimのコピー(ヤンク)コマンドでは、テキストがクリップボードに入れられないため、外部のソフトへ貼り付けることができません
(ほとんどのソフトはコピーするとクリップボードへ入れられ、そこを経由して貼り付け先にペーストされます)。
Vimはレジスタと呼ばれる独自の保存領域を持っており、デフォルトだとコピーした文字はそちらにのみ入れられ、クリップボードには入れられません。

そのため、Vimコマンドでコピーしたテキストを外部のソフトへ貼り付ける、または、外部からのテキストをVimコマンドで貼り付ける、ということを行うためにはちょっとした設定が必要となります。

クリップボード使用のための設定①

デフォルトでインストールされているVimは、最小限の機能しかないvim-tinyというものです。

端末(ターミナル)からVimの機能を確認するコマンド

  vim --version | grep clipboard

を入力すると、クリップボードが使えるかどうか確認ができます。

クリップボード使用不可の表示
Fig.1. クリップボード使用不可の表示

  • -clipboard : クリップボード使用不可
  • +clipboard  : クリップボード使用可能

クリップボード使用不可となっている場合は、GUI機能の付いたVimをインストールする必要があります。
クリップボード使用可能であれば、下記の手順は不要です。
Linuxであればaptコマンドやyumコマンド, Macであればbrewコマンドを使って、インストール可能なVimを調べます(ここではaptコマンドを使います)。

  apt search vim

すると以下のようなものがでてくると思います。

vim/stable 2:8.1.0875-5 armhf
Vi IMproved – enhanced vi editor

vim-athena/stable 2:8.1.0875-5 armhf
Vi IMproved – enhanced vi editor – with Athena GUI

vim-gtk/stable 2:8.1.0875-5 armhf
Vi IMproved – enhanced vi editor – with GTK2 GUI

vim-gtk3/stable 2:8.1.0875-5 armhf
Vi IMproved – enhanced vi editor – with GTK3 GUI

vim-nox/stable 2:8.1.0875-5 armhf
Vi IMproved – enhanced vi editor – with scripting languages support

vim-tiny/stable,now 2:8.1.0875-5 armhf [インストール済み]
Vi IMproved – enhanced vi editor – compact version


GUI機能付属のものであればクリップボードが使えるので、vim-athena, vim-gtk, vim-gtk3, vim-gnome
(私の環境では表示されませんでしたが、インストール可能であればvim-gnomeでも大丈夫)
のいずれか好きなものをインストールしましょう。

  sudo apt install vim-gnome

インストール完了後にもう一度機能を確認してみると

  vim --version | grep clipboard

クリップボード使用可能の表示
Fig.2. クリップボード使用可能の表示

クリップボードが使用可能になっていることが確認できます。

クリップボード使用のための設定②

上記の手順で、エディターのクリップボード機能を使用可能にした上で、さらにレジスタの設定をしておく必要があります。

クリップボードと連携したレジスタ(Vim専用の保存領域)をデフォルトで使用する設定を行います。
端末(ターミナル)上で下記コマンドを入力してください。

  echo 'set clipboard=unnamedplus' >> ~/.vimrc

Vimのコピー・ペーストコマンドで外部とやりとりする

上記の手順でVimのコマンドでもクリップボードが使用可能になりました。
この状態であれば、Vimのコピーコマンドやペーストコマンドを使って他のソフトとのコピペも可能です。

Vim上のyy(1行コピー)コマンドの後に別のソフト上に貼り付け、別のソフトでコピーしたテキストをVim上のp(ペースト)コマンドで貼り付け、ができるはずです。

まとめ

  • テキストエディターVim内でコピペするための基本的なコマンドを紹介
  • 設定なしで、エディター外との間でのコピペも可能
  • 設定することで、Vim内のコマンドを使って、エディター外との間でのコピペも可能

Vim固有のコピー格納場所であるレジスタは複数存在し、格納・取り出すレジスタを指定し使い分けることができます。
もっと詳しく知りたい方は下の記事もどうぞ。
>> Vimのレジスタの種類とコマンドの使い方・構造

コピペ以外のVimコマンド一覧は、下記で確認できます。
>> 【動画あり】Vimのコマンドを一覧にまとめてみた

コメントを残す コメントをキャンセル

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


WSL+VSCode上でJupyter(Python)を使う

Vimのコマンドの表記とコマンドの基本構造(オペレーターとモーション)

Vimの行番号の表示設定と移動方法

Vimで便利な小技(よく使うコマンド集)

Vimの改行コマンドと改行コードの操作

【初心者向け】FreeCADの基本的な使い方と手順の流れ

Windows上のVSCodeでWSLのgitを使う

【動画あり】Vimのコマンドを一覧にまとめてみた

  • プロフィール

  • Yoshiharu

  • 現在、ひよっこ光学系エンジニアをやっている一般人です。我流でプログラムをいじったりしています。備忘録、知識整理を兼ねてアウトプットをしていく予定です。

    • 【ラズパイ】格安な抵抗式・静電容量式の土壌湿度センサーを実際に使って比較

      2022.11.23

      【ラズパイ】格安な抵抗式・静電容量式の土壌湿度センサーを実際に使って比較


    • ELEGOO Neptune 2Sをレビュー!2万円台3Dプリンターの実力を実際に使って評価!

      2022.11.03

      ELEGOO Neptune 2Sをレビュー!2万円台3Dプリンターの実力を実際に使って評価!


    • 自作ラズパイゼロケースを3Dプリンター用にモデリング【FreeCAD】

      2022.10.13

      自作ラズパイゼロケースを3Dプリンター用にモデリング【FreeCAD】


    • 【初心者向け】FreeCADの基本的な使い方と手順の流れ

      2022.10.11

      【初心者向け】FreeCADの基本的な使い方と手順の流れ


    • 【Python】ラズパイでLチカ:LEDの取り扱い~抵抗値の計算

      2022.09.07

      【Python】ラズパイでLチカ:LEDの取り扱い~抵抗値の計算


  • アーカイブ

    • 2022年11月
    • 2022年10月
    • 2022年9月
    • 2022年8月
    • 2022年5月
    • 2022年4月
    • 2022年3月
    • 2022年1月
    • 2021年11月
    • 2021年9月
    • 2021年8月
    • 2021年7月
    • 2021年2月
    • 2021年1月
    • 2020年12月
    • 2020年10月
    • 2020年9月
    • 2020年8月
    • 2020年7月
    • 2020年3月
    • 2020年2月
    • 2020年1月
  • カテゴリー

    • Vim
    • ガジェット
    • プログラム・ソフト
    • 光学
    • 情報処理
    • 物理学・工学
    • プログラム・ソフト
    • 物理学・工学
    • ガジェット
    • 当サイトについて
    • お問い合わせ
    Y Lab Desk

    Copyright © Y Lab Desk, 2022 All Rights Reserved.