LinuxのVimの使い始め

想像してください。あなたはLinuxシステムに深く関与し、必死にファイルを編集しようとしています。しかし、試行錯誤するごとに、それはまるで古代の暗号を解読しているかのような感覚です。クリックするたびにますます迷子になるなら、なぜLinux向けのVimに頼らないのでしょうか?

このチュートリアルでは、広く評価されているテキストエディタであるVimの秘密を解き明かし、Linuxの放浪者からコマンドラインの達人に変身させます。

比喩的な剣(キーボード)を手に取り、Vimの世界へと旅立ちましょう!

前提条件

LinuxシステムでVimをマスターするためには、以下のいくつかの前提条件が必要です:

  • A Linux OS – This tutorial uses an Ubuntu 22.04 LTS.
  • マシンにVimがインストールされていること – Vimのインストール方法については、公式ドキュメントを参照してください。

LinuxでのVimを使用したファイルの作成と編集

Vimは異なるモードで動作し、それぞれ独自の編集機能を提供します。しかし、それらのモードに移る前に、まずはLinuxでVimを使ってファイルを作成・編集する方法を学ぶ必要があります。

Vimを使用してファイルを作成・編集するには、以下の手順に従ってください:

1. ターミナルを開き、以下のvimコマンドを実行して、Vimでsshd_config(任意)という名前のファイルを作成します。このコマンドは、ファイルが存在しない場合は自動的に作成し、存在する場合は既存のファイルをVimで開きます。

Vimで新しいファイルを作成した場合、以下のようなインターフェースが表示され、Vimが現在コマンドモードにあることを示します。コマンドモードは、Vimエディターでテキストと対話する主要なモードの一つです。

Creating a new file via Vim for Linux

2. 次に、下記のテキストをクリップボードにコピーします。これには、実際のサーバー設定を反映していない、デモンストレーション用のサンプルSSHサーバー設定が含まれています。

3. Vim上でiを押し、挿入モードに入ります。挿入モードもVimの主要なモードの一つで、文書の内容を入力および変更することができます。

挿入モードに入ると、以下のようにステータスラインに— INSERT —が表示されます。

Entering the insert mode on Vim

4. 今、Ctrl+Shift+VまたはShift+Insertを押して、ステップ2でコピーしたテキストをVimエディターに貼り付け、Escを押して挿入モードを終了します(コマンドモードに切り替えます)。

— INSERT —ステータスが消えることに注意してください。これは、コマンドモードに戻ったことを意味します。

Inserting the copied text into Vim

5. 最後に、:wコマンドを入力し、Enterを押してファイルに変更を保存します(エディターを閉じずに)。

必要に応じて、以下の他のコマンドを実行できます:

Command Details
:q! Quit the editor without saving the changes.
:w! Write the current file changes forcefully.
:wq Save the changes and quit the editor (or :wq! to save and quit forcefully).
e! Revert to the last saved version of the file.
Saving the changes

status lineは、この場合、ファイルに書き込まれたデータサイズを表示します。行数は23行 (23L) で、バイト数は624バイト (624B) です。

Verifying the changes are saved

Vimでテキストを移動する

Vimでファイルを作成して編集する技術を習得した後は、Vimの重要なスキルであるテキストの移動に取り組みます。効果的な移動は、広大な風景を探検するかのように、Vimの潜在能力を引き出す鍵です。

Vimでテキストを移動する方法を見てみましょう。以下の手順で進んでください:

1. まず、:set nu コマンドを入力して Enter キーを押して、Vimで行番号を設定します。行番号は、コードや大きな文書を扱う際に重要なエディタ機能です。

成功すれば、以下に示すようにエディタ内で行番号が表示されます。

Setting the line numbering

2. 次に、コマンドモードに切り替え (Esc)、そしてファイルの先頭にジャンプするために gg コマンドを押します。

Jumping to the beginning of the file

3. 次に、MaxSessions パラメータの先頭に到達するまで、以下のコマンドのいずれかを押し、カーソルを行末に移動させるために $ を押します。

Command Details
h Move the cursor to the left or the previous character.
j Move the cursor one line down.
k Move the cursor one line up.
l Move the cursor to the right or the next character.
Placing the cursor at the end of the MaxSessions line

4. 今度は、次のテキストを置換します:

  • i を押して挿入モードに切り替えます。
  • 値 (10) を削除して、代わりに 25 を入力します。
  • コマンドモードに戻り (Esc)、変更を保存します (:w)。
Editing a text in Vim

特定の位置にテキストを挿入

Vimは、新しいテキストを挿入する場所と方法を正確に制御する範囲のコマンドを提供します(必要な場所に正確に)。この機能は、行の先頭、現在のカーソル位置のすぐ後ろ、または行の末尾に挿入したい場合に機能します。

特定のポイントにテキストを挿入する方法を確認するには、次の手順を実行します。

1. 行の末尾にカーソルがあるときにI(Shift+I)を押して挿入モードに入り、同時にカーソルを行の先頭に移動します。

Inserting at the beginning of the line

2. コマンドモードに切り替え(Esc)、現在のテキスト行の任意の文字にカーソルを移動し(つまり、先頭に移動)、aコマンドを押します。

このコマンドにより、Vimが挿入モードに切り替わり、前の位置から次の文字にカーソルが移動します。この動作は、既存のテキストを妨げることなく行の中央にテキストを迅速に追加するのに便利です。

Inserting at the current cursor point

3. ‘y’を挿入して、MaxSessionキーをMyaxSessionとして綴り、次にコマンドモードに戻ります(Esc)。

新しい文字‘y’が最初の文字の直後に表示されることに気付くでしょう。

Inserting a character within a line of text

4. 今、次のようにテキスト行を変更します。

  • Aコマンドを実行するには、Shift+Aを押します。これにより、Vimが挿入モードに入り、カーソルが行の末尾に移動します。この動作は、セミコロンのようなコンテンツを迅速に追加したり、文を完成させるのに最適です。
  • 行の末尾に0を追加して、値を250に変更します。
  • コマンドモードに戻り、変更内容を保存します(:w)。
Appending text to the end of the line

新しい行を開く

あなたがVimファイル内でテキストを戦略的に配置する方法をマスターしたら、コンテンツをよく構造化し整理された状態に保つスキルを探求する時が来ました。Vimで新しい行を開く能力は、より読みやすく美しく見えるテキストへの入り口です。

新しい行を開くために、以下の手順を完了します。

1. コマンドモードで、現在のテキスト行の下に新しい行を開くには、oを押します。次に、MyaxSessionsに関する以下のコメントを追加します。

# 注意:サーバーの負荷に応じてmaxSessionsを調整してください
Adding a new line below the current line of text

2. コマンドモードに切り替えます(Esc)、カーソルを他のテキスト行に移動し、O(Shift+O)を押して現在のテキスト行の上に新しい行を追加します。

Adding a new line above the current line of text

3. 次に、ファイルに以下のコマンドを追加し、変更内容を保存します(:w)。

# パフォーマンス問題を回避するためにログレベルに注意してください
Populating the new line of text

テキストの削除と置換

Vimは、基本的な削除やバックスペースキーを超えるテキストの削除や置換のための効率的なコマンドを提供しています。これらのコマンドは、コマンドモードからアクセスできるため、迅速に修正や修正を行うことができ、文字、単語、または行全体を削除または置換することができます。

Linux用Vimでテキストを削除して置換するには、以下を実行します:

1. カーソルをMyaxSessionsパラメータに移動し、特に「y」文字に移動します。

Placing the cursor at a specific character

2. 次に、この場合は「y」であるカーソルの下の文字を即座に削除するために、xを押します。

パラメータは、以下に示すように、MaxSessionsという元のテキストに戻ります。

Deleting a character under the cursor

3. 行PermitRootLogin no:にカーソルを移動します。

Positioning the cursor

4. 今、カーソルの位置に関係なく、テキストの行全体を削除するために"_ddを押します。

コマンドの"_部分は、削除されたテキストを破棄するブラックホールレジスタを指定します(削除されたテキストはどのレジスタにも保存されません)。

Vimには、テキストを保存できる独自の一連のレジスタがあり、ブラックホールレジスタを指定しない場合、コマンドはテキストを削除するのではなく、切り取ります。

成功すると、PermitRootLogin no:行が消えたことに気づくでしょう。

Deleting an entire line of text

5. コマンドモードで、行# Specifies whether root can log in using sshSpecifiesという単語の先頭にカーソルを置きます。

Placing the cursor at the beginning of a word

6. 最後に、"_dwコマンドを実行し、以下に示すようにSpecifiesという単語を削除します。

Deleting a word

オプションとして、追加の削除操作に次のコマンドを選択できます。

Command Details
"_d$ Delete texts from the cursor position to the end of the line.
"_D Deletes from the cursor position to the end of the line.
"_d^ Deletes from the cursor position to the first non-whitespace character of the line
"_dgg Deletes from the cursor position to the beginning of the file.
"_dG Deletes from the cursor position to the end of the file.

文字やテキスト行の置換

Vimの戦略的な削除から、文字やテキストの行を置き換えるという考え方に注目しましょう。置換は、テキストを精緻に洗練し再定義するための筆遣いです。幸いなことに、Vimでは一度限りの文字の置換や、テキストの全行を実行することができます。

文字やテキストの行を置換するためには、以下の手順に従ってください:

1. カーソルを AuthorizedKeysFile .ssh/authorized_keysの行に移動し、特に authorizedの中の ‘z’ の文字に配置します。以下に示すように:

Positioning the cursor

2. 配置したら、r を押します。これはVimにカーソルの下の文字を置き換えることを伝え、’s’ の文字を入力します。 r コマンドは、最初に挿入モード (i) に入ることなく文字を置き換えることができます。

authorizedの中の ‘z’ の文字が ‘s’ の文字で置き換えられ、単語はauthorisedに変わりました。

Replacing a character within a line of text

3. 次に、AuthorizeKeysFileの中の文字 ‘z’ の位置にカーソルを置きます。

Placing the cursor on another character

4. R (Shift+R) を押して置換モードに入り、文字を置き換えるために ‘s’ と入力しますが、まだ置換モードを終了しないでください。

r コマンドでは一度に一文字だけ置き換えることができますが、R コマンドは連続して入力することで既存のテキストを上書きすることができます。

Entering replace mode

5. 最終的に、以下のテキストをクリップボードにコピーし、カーソルをファイルの先頭に移動してコピーしたテキストを貼り付けます(Ctrl+Shift+VまたはShift+Insert)。

まだ置換モードにいるので、貼り付けたテキストはファイルの最初の行を置き換えます。

Overwriting an entire line of text via the replace mode

ファイル内のテキストを検索する

、やり直したり元に戻したりする際に役立つスキルです。Vimを使用すると、ファイル内の特定の単語、フレーズ、またはパターンを検索することができます。

無駄にスクロールせずに特定のテキストセクションを迅速に見つけて操作できると、生産性が飛躍的に向上するでしょう。

ファイル内のテキストを検索するには、以下の手順を実行します:

1. カーソルをファイルの先頭に移動します(ggコマンド)、検索モードを開始するために/(スラッシュ)を押し、検索語logを入力してEnterキーを押します。

このコマンドは指定した語(log)を検索し、カーソルを次の出現箇所に移動します。

Searching for the term “log”

2. 次に、nを押して次の出現箇所に移動します。

Moving to the next occurrence of the term “log”

3. さらに、N(Shift+N)を押して前の出現箇所に戻ります。

Moving back to the previous occurrence of the term “log”

さらに、Vimは以下のような他の検索ショートカットも提供しており、より柔軟な検索が可能です:

Command Details
? Initiates a reverse search of a term.
* Performs a forward search for the word under the cursor. Continue pressing * to cycle through further occurrences of the word until it loops back to the first instance.
# Performs a backward search for the word under the cursor. Continuously pressing # works similarly to the * command but cycles until it loops back to the last instance.

他のVimコマンドとの検索の組み合わせ

Vimの複雑な操作方法をナビゲートしながら、なぜ検索を他のコマンドと組み合わせてテキスト編集のスキルをさらに高めないのでしょうか?

Vimは、特定の出現箇所の置換からパターンに一致する行を削除するまでのアクションを実行できます。

Vimで検索とアクションのシナジーを目撃するには、次の操作を実行してください。

1. コマンドモードで、削除を開始するポイントにカーソルを置きます(つまり、検索語 log の最初の出現箇所)。

Positioning the cursor at the first occurrence of the term “log”

2. 次に、d/log と入力してEnterキーを押してください。すると、カーソルの位置から次の log の出現箇所までのすべてが削除されます。以下に示します。

Deleting everything from the cursor up to the next occurrence of “log”

3. 前のアクションを元に戻します(u コマンドを使用)し、検索語 log の最初のインスタンスにカーソルを置きます。

Placing the cursor at the first instance of the search term “log”

4. 次に、以下のコマンドを実行して特定の範囲内のテキストを検索して置換します。ここで:

  • :. – 現在の行でコマンドモード(:)に入ります(.)。
  • ,$ – 置換の範囲を指定します。
  • s/log/logs/g – Substitute all occurrences of the old word (log) with new (logs) globally (g) within the specified range.
Replacing all occurrences of the term “log” with “logs” within a specified rage

Vimのビジュアルモードでテキストを選択する

Vimで検索の芸術を他のコマンドと融合させるだけでなく、テキスト編集の経験を変革する機能を明らかにする必要があります。Vimのビジュアルモードは、テキストをよりインタラクティブで視覚的に操作できるようにします。ビジュアルモードは、テキストの一部をハイライトして操作する柔軟で効率的な方法を提供します。

テキストを選択して編集するには、個々の文字を選択して編集するか、次のようにテキストのブロックを選択して編集できます。

1. ファイルの先頭にカーソルを移動します(gg コマンド)、そして v を押してビジュアルモードをアクティブにします。

Entering visual mode

2. カーソルを行末に移動するには $ を押します。ビジュアルモードにいるので、このコマンドはテキスト行をハイライト表示します。

Highlighting a line of text

3. 以下のようにコピー&ペーストを行います:

  • ハイライト表示されたテキストを Vim のレジスタにコピーするには y を押します。
  • ファイル内の最後の行の末尾にカーソルを移動するには G$ を押します。
  • コピーしたテキストを(カーソルの後ろに)ペーストするには p を押します。
    コピーしたテキストは y コマンドで Vim のレジスタに保存され、p コマンドはレジスタからテキストをペーストします。
Copying and pasting a line of text after the cursor
Copying and pasting a line of text at the cursor’s position

4. 前のアクションを取り消すには (u)、ファイルの先頭にカーソルを移動し(gg)、そしてビジュアルラインモードに入るために V(Ctrl+V)を押します。

ビジュアルモードでは単一の行を選択するのとは異なり、ビジュアルラインモードでは複数の行を選択できます。

Entering visual line mode

5. ファイルの先頭から Protocol 2 行まで文字を選択するには下矢印キーを使用します。

Selecting multiple lines of text via visual line mode

6. 選択した複数行のテキストを切り取るには d を押します。

Cutting multiple lines of text

7. 最後に、ステップ 6 で切り取ったテキストを以下のように貼り付けます:

  • ファイルの最後の行に移動(G)、そしてその下に新しい行を作成します(o)。
  • 戻ってコマンドモード(Esc)に戻り、テキスト(p)を貼り付けてください。
Pasting multiple lines of text

結論

おめでとうございます!あなたはLinux用のVimの複雑な領域を航海し、その過程でテキスト編集の知恵の宝庫を開拓しました。ファイルの作成や編集からビジュアルモードの技術を習得し、あなたはVimの達人の帽子をかぶりました。

しかし、あなたのコマンドラインの冒険はこれで終わりではありません。なぜなら、マクロやプラグインなどの高度な機能を探索して、Vimをあなたのニーズに合わせてカスタマイズできるからです。

これらの基本的なスキルを使用して、ファイル管理、複雑な検索パターン、および個人用のVimスクリプティングなど、Vimのより深い側面を探求してください。

Source:
https://adamtheautomator.com/vim-for-linux/