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行削除して別の場所に貼り付ける方法
- まず、esc を押して、移動、削除できるモード(ノーマルモード)にする。ノーマルモードで esc を押しても変なことにはならないので、vi ではわけがわからなくなったら、esc を2、3回叩く。
- j(下) または k(上) で削除したい行に移動する。ちなみに、hl で左右、jk で下上に移動する。昔、hjklに、カーソルキーがあったから、こうなっているらしい。
- dd を押す。1行削除される。(1 個目の d は delete、2個目の d は行を表す)
- 貼り付けたい行に jk で移動。
- p(小文字) で現在行の後ろに、P(大文字) で現在の前に挿入される。(p は paste の意味)
- 間違った、と思ったら、u を押せば取り消せる。(u は undo の意味)
- 同じ行を複数行コピーしたければ、p または、P を押せばよい。
1行削除せずにコピーして別の場所に貼り付ける方法
- まず、esc を押して、移動、削除できるモード(ノーマルモード)にする。
- j(下) または k(上) で削除したい行に移動する。ちなみに、hl で左右、jk で下上に移動する。昔、hjklに、カーソルキーがあったから、こうなっているらしい。
- yy を押す。1行削除される。(1 個目の y は yank、2個目の y は行を表す)
- 貼り付けたい行に jk で移動。
- p(小文字) で現在行の後ろに、P(大文字) で現在の前に挿入される。
2行以上コピー、または、削除して別の場所に貼り付ける方法
ここでは、visual mode を紹介したい。私自身、複数行の場合、ほぼ visual model での削除しか使わない。
- まず、esc を押して、移動、削除できるモード(ノーマルモード)にする。
- j(下) または k(上) で削除したい行に移動する。
- V(大文字) を押す。今いる行が白黒反転した状態になるはずだ。
- j(下) または k(上) で削除したい最終行に移動する。
- 削除の場合は d、コピーの場合は y を押す。
- 貼り付けたい行に jk で移動。
- p(小文字) で現在行の後ろに、P(大文字) で現在の前に挿入される。
コピーした後、visual で範囲指定して、p or P すると、その範囲を消してペーストしたりもできる。
行ではなく、行の途中からなど、範囲指定してコピペしたい。
- まず、esc を押して、移動、削除できるモード(ノーマルモード)にする。
- hjkl でコピー、または、削除したい先頭位置に移動する。
- v(小文字) を押す。
- hjkl でコピー、または、削除したい最終位置に移動する。
- 削除の場合は d、コピーの場合は y を押す。
- 貼り付けたい場所に hjkl で移動。
- p(小文字) で現在行の後ろに、P(大文字) で現在の前に挿入される。
まとめ
- とにかく esc でノーマルモードに移動。esc は何回押しても大丈夫。
- hjkl で移動
- 1行をコピペする場合、dd または yy した後、p または P
- 範囲を選択してコピペする場合、v または V で visual mode に移り、範囲指定して d または y した後、p または P