vi (vim) でコピペする方法

 2022/01/31, last updated 2022/08/03 -  ~4 Minutes

端末エミュレータでコピペするのはめんどうでは?

Linux サーバを管理する時、vi (vim) を使わないといけないことが多いと思う。nano がインストールされたりしていることもあるが、nano もそれほど使いやすいと思えない。

Tera Term などの端末エミュレータのコピペ機能を使っても良いのだが、改行などがあったりすると、コピーした後、改行を削除したりしないといけなくて、めんどうだ。

最近の Linux は /usr/bin/vi が vim になっている。vim のコピー&ペーストを使って、編集速度をアップさせたいところだ。

この記事では、一つのファイル内での編集について書く。

複数ファイルを編集する場合は vim で複数ファイル編集 なども参考にしていただきたい。

他のサーバの設定をコピーする場合等には、端末エミュレータのコピペ機能を使う必要があるだろう。

vim でのコピペの方法

1行削除して別の場所に貼り付ける方法

  1. まず、esc を押して、移動、削除できるモード(ノーマルモード)にする。ノーマルモードで esc を押しても変なことにはならないので、vi ではわけがわからなくなったら、esc を2、3回叩く。
  2. j(下) または k(上) で削除したい行に移動する。ちなみに、hl で左右、jk で下上に移動する。昔、hjklに、カーソルキーがあったから、こうなっているらしい。
  3. dd を押す。1行削除される。(1 個目の d は delete、2個目の d は行を表す)
  4. 貼り付けたい行に jk で移動。
  5. p(小文字) で現在行の後ろに、P(大文字) で現在の前に挿入される。(p は paste の意味)
  6. 間違った、と思ったら、u を押せば取り消せる。(u は undo の意味)
  7. 同じ行を複数行コピーしたければ、p または、P を押せばよい。

1行削除せずにコピーして別の場所に貼り付ける方法

  1. まず、esc を押して、移動、削除できるモード(ノーマルモード)にする。
  2. j(下) または k(上) で削除したい行に移動する。ちなみに、hl で左右、jk で下上に移動する。昔、hjklに、カーソルキーがあったから、こうなっているらしい。
  3. yy を押す。1行削除される。(1 個目の y は yank、2個目の y は行を表す)
  4. 貼り付けたい行に jk で移動。
  5. p(小文字) で現在行の後ろに、P(大文字) で現在の前に挿入される。

2行以上コピー、または、削除して別の場所に貼り付ける方法

ここでは、visual mode を紹介したい。私自身、複数行の場合、ほぼ visual model での削除しか使わない。

  1. まず、esc を押して、移動、削除できるモード(ノーマルモード)にする。
  2. j(下) または k(上) で削除したい行に移動する。
  3. V(大文字) を押す。今いる行が白黒反転した状態になるはずだ。
  4. j(下) または k(上) で削除したい最終行に移動する。
  5. 削除の場合は d、コピーの場合は y を押す。
  6. 貼り付けたい行に jk で移動。
  7. p(小文字) で現在行の後ろに、P(大文字) で現在の前に挿入される。

コピーした後、visual で範囲指定して、p or P すると、その範囲を消してペーストしたりもできる。

行ではなく、行の途中からなど、範囲指定してコピペしたい。

  1. まず、esc を押して、移動、削除できるモード(ノーマルモード)にする。
  2. hjkl でコピー、または、削除したい先頭位置に移動する。
  3. v(小文字) を押す。
  4. hjkl でコピー、または、削除したい最終位置に移動する。
  5. 削除の場合は d、コピーの場合は y を押す。
  6. 貼り付けたい場所に hjkl で移動。
  7. p(小文字) で現在行の後ろに、P(大文字) で現在の前に挿入される。

まとめ

  • とにかく esc でノーマルモードに移動。esc は何回押しても大丈夫。
  • hjkl で移動
  • 1行をコピペする場合、dd または yy した後、p または P
  • 範囲を選択してコピペする場合、v または V で visual mode に移り、範囲指定して d または y した後、p または P