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

はじめに

💡
この記事は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$ -> カーソルから行末までコピー

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

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

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

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

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

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

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

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

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

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

使い方は簡単です。

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

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

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

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

文の変更

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

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

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

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

文の削除

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

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

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

その他の編集コマンド

一文字編集コマンド

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

  • 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)を入れると、置き換える前に確認ができます。

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

おわりに

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

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

Read more

zshの模様替えをしました

zshの模様替えをしました

💡この記事は下の動画の受け売りです: はじめに 今年も早いもので、すでに三月。春の始まりです。 春といえば新しい生活。心機一転! 周りの環境が大きく変わる方も多いのではないでしょうか? 今年の春、私の人生に大した変化はないのですが、それでも人生にちょっと新しい風を吹かしたいな~と思うので、今回思い切って模様替えをしようと思います! ターミナル環境のね。 zshellって? シェル (shell) とは、OSとユーザーの仲介役。ターミナルを開いたときに動くプログラムがシェルです。 そのシェルにも色々あるんです。sh, bash, fish, ksh などなど…。今回は、その中のzsh というシェルの話。 zshは高いカスタマイズ性が人気です。zsh そのものの機能と豊富なプラグインでターミナル環境を自分の好きなように設定できます。 私もzshを使い始めて数年たちますが、欲しいところにちゃんと手が届く、という印象です! …とか言いつつ私は面倒くさがりなので、自分で.zshrc をイジることはしません。YouTubeやSNSなどで見つけたカッコいいタ

By Roland Thompson
Terraformを使って"AWS Lambdaとその取り巻き"を召喚しよう

Terraformを使って"AWS Lambdaとその取り巻き"を召喚しよう

はじめに 人生、いろんな「派閥」ってありますよね。私が属するITインフラ業界にも色々あります。どのクラウドを使うか、どのIDEを使うか、どのOSを使うか…枚挙に暇がありません。 インフラ(IaC)言語もその一つ。私はこの業界に足を踏み入れてから、ずっとCloudFormation派閥です。私はAWS専門だったので、AWS公式のCloudFormationで仕事が成り立ってました。 しかし最近、AzureやDatabricks関連の仕事も私に降ってくるようになりました。そうなると、AWS限定のCloudFormationでは対応できません。 そんなとき、複数のクラウドプラットフォームに対応できるTerraformという存在を耳にしました。 Terraformの練習として、AWS Lambdaとその取り巻き(ECR, IAM, Secrets Manager, CloudWatch, SQS) を召喚してみたので、この記事にまとめます。 環境構築 まずは公式マニュアルを参考にTerraformをインストールしましょう。 ターミナルからTerraformが動けば、インストー

By Roland Thompson