31
42

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Vim】実践Vimの実践 【第1章 Vimのやり方】

Last updated at Posted at 2023-05-15

Introduction

以下の記事でVimの基礎をご紹介しました。

その中でも触れた実践Vimをまとめます。

対象者はチュートリアル完了後、実践的な操作に挑戦したい方です。
そのため<CR>Enterで表現するなど、知識がなくとも読みやすくしています。

本記事のみで学べるよう努めますが、より詳しくかつ体系的に学びたい方は
実践Vimを読みながら進めることをおすすめします。

2023 年 5 月 14 日現在、Kindle Unlimited対象商品です。

実践Vimのサンプルコードです。
記事更新に合わせて章ごとにディレクトリを分割し、参照しやすいようにします。
※公式のサンプルはリンク切れしています。

実際に操作することで、コマンドを効率よく定着させましょう。

Vim は永久に不滅のソフトウェア
(実践Vim「謝辞」より)

ソフトウェアの世界は突き詰めていくとどこかで必ずVimが待ち受けています。
苦手意識をなくして、より良い開発者体験(DX)を!

本記事が少しでも読者様の学びに繋がれば幸いです!
「いいね」をしていただけると今後の励みになるので、是非お願いします!

環境

Ubuntu22.04
Vim9.0

第 1 章 Vim のやり方

TIP1: ドットコマンドとは

ドットコマンドを使うと、直前に行った変更を繰り返せる。
これは Vim のコマンドの中で最も強力で、使い道も一番たくさんあるものだ。
(実践 Vim「TIP1」より)

  • Vimは同じことを繰り返すのがとても得意。
  • ドットコマンド(.):直前に行った変更を繰り返せる。
    • 変更のレベルは個々の文字、行全体、ファイル全体。
    • Vimコマンドの中で最も強力。

インデントの繰り返し

  • >Gで現在の行からファイル末尾までのインデントを 1 段深くする。
chapter_code/1_dots/the_vim_way/0_mechanics.txt
Line one
Line two
Line three
Line four

2 行目で>G実行

chapter_code/1_dots/the_vim_way/0_mechanics.txt
Line one
        Line two
        Line three
        Line four

_>G後に.で再度インデント

chapter_code/1_dots/the_vim_way/0_mechanics.txt
Line one
                Line two
                Line three
                Line four

TIP2: DRY(Don't Repeat Yourself)

何行にも渡って行末にセミコロンを追加するといったよくある状況について、Vim は 2 つの手順を一度で行える専用のコマンドを提供している。
(実践 Vim「TIP2」より)

各行の末尾にセミコロン

  • 行の末尾にセミコロンを追加する。

    chapter_code/1_dots/the_vim_way/2_foo_bar.js
    var foo = 1
    var bar = 'a'
    var foobar = foo + bar
    
    • A;<Esc>で変更。
      • aはカーソルの後ろに追加。
      • Aは行末に追加($aと同義)。
    chapter_code/1_dots/the_vim_way/2_foo_bar.js
    var foo = 1;
    var bar = 'a'
    var foobar = foo + bar
    
  • 残りの行の末尾にもセミコロンを追加する。

    • jで 1 行下に移動。
    • .で変更。
    chapter_code/1_dots/the_vim_way/2_foo_bar.js
    var foo = 1;
    var bar = 'a';
    var foobar = foo + bar;
    

TIP3: 一歩下がって、三歩進む

Vim にはイディオム的な操作方法があるのだが、これを使うと、ある 1 文字の前後に空白文字を挿入できる。
(実践 Vim「TIP3」より)

変更を繰り返す

  • 文字列連結の+記号前後に空白文字を挿入。

    chapter_code/1_dots/the_vim_way/3_concat.js
    var foo = "method("+argument1+","+argument2+")";
    
    • f+で次の+に移動。
    • s<Space>+<Space><Esc>で空白挿入
    chapter_code/1_dots/the_vim_way/3_concat.js
    var foo = "method(" + argument1+","+argument2+")";
    
  • 残りの+記号前後にも空白文字を挿入。

    • ;で直前のfを繰り返す。
    • .で空白挿入
    chapter_code/1_dots/the_vim_way/3_concat.js
    var foo = "method(" + argument1 + "," + argument2 + ")";
    

TIP4: 実行して、繰り返して、元に戻す

繰り返し作業にぶち当たったときには、モーションと変更の両者を繰り返し可能なものにすることで、最適な編集方針を打ち立てられる。
Vim にはこれをうまくやるための天賦の才が備わっている。
(実践 Vim「TIP4」より)

  • ドットコマンドで繰り返していると、コマンドミスが簡単に発生する。
    • u(アンドゥ)で直前の変更を元に戻す。

TIP5: 手作業での検索と置換

Vim には検索置換処理を行う:substitute コマンドがある。
(実践 Vim「TIP5」より)

  • 一括置換はパターンマッチングで置換。

  • パターンマッチングと置換は以下を参照。

  • contentcopyに一括置換。

    chapter_code/1_dots/the_vim_way/1_copy_content.txt
    ...We're waiting for content before the site can go live...
    ...If you are content with this, let's go ahead with it...
    ...We'll launch as soon as we have the content...
    
    • :%s/content/copy/g
    chapter_code/1_dots/the_vim_way/1_copy_content.txt
    ...We're waiting for copy before the site can go live...
    ...If you are copy with this, let's go ahead with it...
    ...We'll launch as soon as we have the copy...
    
  • contentcopyに 1 つずつ置換。

    • contentにカーソルを合わせる。
    • *で単語検索。
    • cwcopy<Esc>contentcopyに置換。
    • nで次のcontentに移動。
    • .contentcopyに置換。
    chapter_code/1_dots/the_vim_way/1_copy_content.txt
    ...We're waiting for copy before the site can go live...
    ...If you are content with this, let's go ahead with it...
    ...We'll launch as soon as we have the copy...
    

TIP6: ドットの公式

共通のパターンとなる最適な編集方針を見いだしてみよう。
(実践 Vim「TIP6」より)

  • ドットの公式: ドットコマンドの共通パターンとなる最適な編集方針。
    • キーストローク 1 回 + ドットコマンドが理想的な解放。
      • これより少ないキーストロークは無理なため。

最後に

ドットコマンド(.)を覚えておくとVimの強力なコマンドを手軽に繰り返せます。

また、本記事で紹介したコマンドを実際に試してみることを強くおすすめします。

最後まで閲覧頂きありがとうございました。
本記事がお役に立てば幸いです!

次回ノーマルモード

参考書籍

参考 URL

31
42
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
31
42

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?