0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[Vim入門④] 文章を編集してみよう

Posted at

はじめに

この記事はVim入門シリーズの第4弾です。 初めての方は過去記事もどうぞ:
第1弾: Vimの4つのモード
第2弾: 横方向の移動
第3弾: 縦方向の移動

今回はVim入門シリーズ第4弾、文章の編集です。

皆さん、過去三回の記事でVim内の移動はマスターされたかと思います!

また、移動だけでなく、より根源にあるVimの4つのモードの使い方も少しずつ身についてきたかと思います。

今回からは移動へのフォーカスを外し、文章の編集について詳しく見ていきます。

そもそも編集って?

「文章の編集」 と一言にいっても、その定義は広いです。

「文章の編集」と聞いてまず思いつくのが 「文章の入力」 かと思います。

従来のワードプロセッサーやIDEでは、この 「文章の入力」 がデフォルトです。例えば、Microsoft Wordを開いて文字を入力すると、文章の入力が行われます。

でも、Vimはそうではありません。 「文章の編集」 (ノーマルモード)がデフォルトなんです。
Vim初心者がつまづく一番の原因はここだと思います。

「文章の編集」は、単語を入れ替えたり、文章を動かしたり、コピペしたり、文章を削除したり。編集作業全般を指します。

Vimは、これらの編集作業全般ができるノーマルモードがデフォルトなんです。
これだけ多くの作業を キーボードだけ で出来るようにVimは設計されているのです。

覚えるコマンドは多いですが、以前紹介した移動コマンドと組み合わせれば覚えやすいと思います。

今回はノーマルモードやビジュアルモードを使った文章の編集を紹介します。

コピー

yキーを押すと選択範囲をコピーできます。
コピーする時はコピーしたい文の範囲も併せて指名します。

例えば、第二回で紹介した横移動コマンドを使って、

  • yw -> カーソル上の1単語をコピー
  • y5w -> カーソルから先の5単語までをコピー
  • y$ -> カーソルから行末までコピー
    Vim

第三回で紹介した縦移動コマンドなら

  • y2j -> カーソルから下2行までをコピー
  • y{ -> カーソル内の文節をコピー
  • yG -> カーソルからファイルの終わりまでコピー
    Vim

…と、移動コマンドと組み合わせることで広範囲の編集が簡単になります。

ちなみにペーストはpでできます。ペーストは回数指定ができるので、10pと打てば同じ文章を10回ペーストしてくれます。

テキストオブジェクトについて

もしこの記事から一つ持ち帰るとすれば、マジでこれを覚えておいてもらいたいです。

上記コマンドを試してみた方、ywy{に違和感を覚えませんでしたか?

実はこのコマンド、カーソルが対象の途中にある場合、カーソルから対象の終わりまでしかコピーしてくれません。

単語や文節そのものをコピーしてくれないんです。

もし、カーソルの位置に関係なく単語や文節を全部コピーしたい場合、テキストオブジェクトを有効利用しましょう!

使い方は簡単です。

  • yiwでカーソル内の単語をコピー
  • yawでカーソル内の単語+周りのスペースをコピー

…といった感じで、コマンドの間にiまたはaを入れることで使えます。
Vim

コピーできる単位はw(単語),((括弧),"(引用符),{(文節)などなど…

これを使うと編集コマンドの制度が爆上がりするので、使わない手はないです。
ぜひ試してみてください!

文の変更

cを押すと選択範囲を変更できます。
選択範囲にある文章が削除され、即座にインサートモードに切り替わります。

yと同じで、移動コマンドを使って選択範囲を指定します。

  • c0 -> カーソルから行頭まで変更
  • c2k -> カーソルから上2行までを変更
  • ci(でカーソルの括弧内の文章を変更
    Vim

cで削除された元の文章はクリップボードにコピーされるので、pでペーストして復元できます。
{: .notice--info}

文の削除

cを押すと選択範囲を削除できます。

yおよびcと同じで、移動コマンドを使って選択範囲を指定します。

  • d4b -> カーソルから前の四単語まで削除
  • dgg -> カーソルからファイルの先頭まで削除
  • da"でカーソルの引用符をまとめて削除
    Vim

その他の編集コマンド

一文字編集コマンド

一文字だけ編集したいときは、文章範囲を指定するのもメンドクサイので下記コマンドを使いましょう。

  • s (一文字変更)
  • x (一文字削除)

大文字小文字

~で文字の大文字小文字を入れ替えられます。
範囲選択できるので、単語やカッコ内の文章の入れ替えもできます。

単語の検索と置き換え

第一回: Vimの4つのモードで紹介したコマンドモードを使って、単語の検索と置換ができます。
具体的には、ノーマルモード中に:sと入力することでコマンドモードに移行しsedと同じことができるようになります。

  • :s/before/after -> カーソルがある行の一番初めに出てくるbeforeafterに置き換え
  • :s/before/after/g -> カーソルがある行に出てくる全てのbeforeafterに置き換え
  • :1,5s/before/after/g -> ファイルの1行目から5行目のすべてのbeforeafterに置き換え
  • :%s/before/after -> 全行の一番初めに出てくるbeforeafterに置き換え
  • :%s/before/after/g -> ファイル内すべてのbeforeafterに置き換え
  • :%s/before/after/gc -> c(checkのc)を入れると、置き換える前に確認ができます。
    Vim

ちなみに、ビジュアルモードで範囲を指定してから:sと入力すると選択範囲でsedできます。

おわりに

今回は、Vimを使った文章の編集コマンドをいくつか紹介しました。
特にc y dはVimの基本といってもいいコマンドで、よく使われます。

前回の移動コマンドと合わせて、より早いVimライフをエンジョイしましょう!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?