VimはLinuxの一般的なテキストエディタであり、システムO&Mやシェルスクリプトのコンパイルなどのシナリオに適しています。 このトピックでは、Vimの基本的なコマンドと、Vimの作業モードを切り替える方法について説明します。 これにより、Vimエディタをすぐに使い始めることができます。
Vimのインストール
デフォルトでは、VimはLinuxにインストールされます。 Vimを個別にインストールする必要はありません。 Vimのバージョンを表示するには、ターミナルでvim -- version
コマンドを実行します。 次の例では、Vim 8.0が使用されています。 コマンドはVimのバージョンによって異なります。
VIM - Vi IMproved 8.0 (2016 Sep 12, compiled Aug 10 2022 11:26:47)
Included patches: 1-1763
Modified by OpenAnolis Community
Compiled by OpenAnolis Community
Huge version without GUI. Features included (+) or not (-):
+acl +farsi +mouse_sgr -tag_any_white
...
モードを切り替える
vim <File name>
コマンドを実行してファイルを開くと、Vimは通常モードになります。 ファイルが存在しない場合、Vimはファイルを作成します。 次の図は、Vimの作業モードを切り替える方法を示しています。
モード | 機能性 | モード切り替え方法 |
通常モード
| 文字または行をコピー、貼り付け、削除できます。 |
|
挿入モード
| 文字を挿入できます。 | 通常モードからこのモードに切り替えるには、 説明 Vimエディタが挿入モードに入ると、エディタの左下隅に |
モードを置き換える
| 文字を置き換えることができます。 | 通常モードからこのモードに切り替えるには、 説明 VimエディタがReplaceモードに入ると、エディタの左下隅に |
視覚モード
| テキストのブロックを選択できます。 テキストに対してコマンドのコピー、置換、削除などのコマンドを実行する前に、テキストのブロックを選択する必要があります。 | 通常モードからこのモードに切り替えるには、 説明 Vimエディタがビジュアルモードに入ると、 |
コマンドモード
| 文字列の検索と置換、行番号の照会、ファイルへの変更の保存、Vimエディターの終了を許可します。 | 通常モードからこのモードに切り替えるには、 |
基本コマンド
ファイルを開くOpen a file
vim <File name>
コマンドを実行して1つのファイルを開き、通常モードに入ります。 ファイルが存在しない場合、Vimはファイルを作成します。vim <Name of File 1> <Name of File 2>
コマンドを実行して、複数のファイルを開き、通常モードに入ります。デフォルトでは、ファイル1が開きます。 ファイル1を変更したら、
:w
と入力してファイル1を保存します。 次に、:bn
と入力してファイル2を開き、ファイル2を変更し、:w
と入力してファイル2を保存します。:bp
と入力して、ファイル1を再度開きます。ファイルリストを表示するには、
:ls
と入力します。
:open <Name of File 3>
コマンドを実行して、コマンドモードで新しいファイルを開きます。 open <Name of File 3> コマンドを実行する前に、:w
と入力して前のファイルを保存します。
Move the cursor
通常モードで
上矢印キーまたはk: カーソルを上に移動します。
下矢印キーまたはj: カーソルを下に移動します。
左矢印キーまたはh: カーソルを左に移動します。
右矢印キーまたはl: カーソルを右に移動します。
挿入モードで
上、下、左、または右の矢印キーを押すだけでカーソルを移動できます。
コンテンツの挿入
通常モードから挿入モードに切り替えるには、i、I、a、A、o、またはO
を押します。
i
: 現在の文字の左に文字を挿入します。I
: 現在の行の先頭に文字を挿入します。a
: 現在の文字の右側に文字を挿入します。A
: 現在の行の末尾に文字を挿入します。o
: 現在の行の下に行を挿入します。O
: 現在の行の上に行を挿入します。
コピー&ペーストコンテンツ
コンテンツのコピーとペーストに使用されるキーは、Windows WordエディターのCtrl + CおよびCtrl + Vと同じ機能を提供します。 通常モード:
yy
: カーソルがある行の内容をコピーします。p
キーを押してコンテンツを貼り付けることができます。nyy
: nはコピーする行数を指定します。 たとえば、2yy
キーを押して、カーソルがある行と次の行をコピーします。p
: カーソルがある行の横の行に貼り付けます。P
: カーソルがある行の上の行に貼り付けます。
コンテンツの削除
通常モードで
1つの文字を削除するには、カーソルをその文字に移動して
x
キーを押します。行全体を削除するには、カーソルを行に移動して
dd
キーを押します。 このキーは、Windows WordエディターのCtrl + Xに相当します。p
キーを押してコンテンツを貼り付けることができます。現在の行と現在の行の上の行を削除するには、
dk
キーを押します。現在の行と次の行を削除するには、
dj
を押します。現在の行からファイルの最後までコンテンツを削除するには、
dG
を押して現在の行からファイルの最後までコンテンツを削除します。nx
: nは数である。 このキーは、カーソルによって強調表示された文字とそれに続く (n − 1) 文字を削除する。ndd
: nは数字です。 このキーは、カーソルが配置されている現在の行と現在の行の下の (n - 1) 行からコンテンツを削除します。 このキーは、Windows WordエディターのCtrl + Xに相当します。p
キーを押してコンテンツを貼り付けることができます。
挿入モードで
削除するコンテンツの右側にカーソルを移動し、
delete
キーを押します。
コンテンツの照会
通常モードで
/text
: テキストを照会します。 デフォルトでは、完全一致が使用されます。 /textコマンドを実行してEnterキーを押すと、一致する文字がハイライトされます。ケースに関係なくコンテンツを検索するには、まず
:set ignorecase
コマンドを実行します。:set noignorecase
コマンドを実行して、完全一致結果を取得します。
n
を押して次の試合に進みます。N
を押して前の試合に進みます。
コンテンツの置き換え
通常モードで
r
: カーソルで強調表示されている文字を置き換えます。R
:Esc
キーを押してreplaceモードを終了するまで、ハイライトされた文字を続けて置き換えます。cc
: カーソルがある行を削除し、挿入モードに入ります。:% s/<Old text>/<New text>/g
: <Old text> に一致するすべてのテキストを検索し、一致する各テキストを <New text> に置き換えます。/g
は、一致するすべてのテキストが置き換えられることを示します。 /gを入力しない場合は、各行の最初の一致のみが置き換えられます。
挿入モードで
置換するコンテンツを削除し、置換コンテンツを挿入します。
元に戻す操作とやり直し操作
通常モードで
u
: 挿入または変更を元に戻します。 このキーは、Windows WordエディターのCtrl + Z
に相当します。U
: すべての挿入と変更を取り消し、前の行の内容を復元します。Ctrl + r
: 前の操作をやり直して、元に戻した操作を復元します。 このキーは、Windows WordエディターのCtrl + Y
に相当します。
インデントとタイプセットの行
通常モードで
>>
: 行全体を右にインデントします。 デフォルトでは、インデント値は8です。これは、タブ文字 (tab) がデフォルトで使用するスペースの数です。<<
: 行全体を左にインデントします。
コマンドモードで
:ce
: ライン全体を中央に揃えます。:le
: 行全体を左に揃えます。:ri
: 行全体を右に揃えます。
コメントアウトコード
ファイルをバックアップします。 大規模な置換操作を実行する前に、ファイルをバックアップするか、元に戻す機能 (
u
) を使用して、誤った操作を防ぐことをお勧めします。 たとえば、sudo cp /etc/text.txt /etc/text.txt.bak
コマンドを実行してファイルをバックアップします。正規表現を理解する。 Vim正規表現の意味を理解し、無関係なコンテンツを削除しないようにしてください。 Vim正規表現では、スラッシュ (
/
) は、スラッシュ (\/
) の組み合わせとしてエスケープする必要があります。 正規表現に慣れていない場合は、Regex101などのツールを使用して正規表現を練習またはデバッグします。さまざまな言語のコメントスタイルを理解します。 使用するプログラミング言語に基づいて、置換コマンドでコメント区切り文字を使用します。
視覚モードで
連続するコード行をコメントアウトするには、次の手順を実行します。
カーソルを上下に移動して、コメントアウトする行を選択します。
:
を押してコマンドモードに入ります。 次に、:'<,'>
が自動的に入力されます。これは、選択されたコンテンツがコメントアウトされることを示します。置換コマンドまたは文字列を入力します。 たとえば、各行の先頭にコメント区切り文字 (
#
) を追加し、s/^/#/
コマンドを入力してenter
キーを押します。
すべてのコードをコメントアウトします。
:% s/^/#/g
コマンドを実行し、コメント区切り文字 (#
) を使用してすべての行をコメントアウトします。
挿入モードで
コメントしたい行をコメントアウトするには、コメント区切り文字 (#) を手動で入力します。
ファイルを保存して終了
ファイルを保存するには、通常モードで
:w
と入力し、enterキーを押します。Vimを終了するには、
:q
と入力し、enterキーを押します。ファイルを保存してVimを終了するには、
:wq
または:x
と入力してenterキーを押すか、ZZ
と直接入力します。ファイルを保存せずにVimを強制終了するには、
: q!
Enterキーを押します。ファイルを保存してVimを強制終了するには、
:wq
と入力してenterキーを押します。
ファイルの暗号化
ファイルを暗号化するには、
vim -x <file name>
コマンドを実行します。 パスワードを指定すると、通常モードになります。 少なくとも1回はファイルを保存する必要があります。 それ以外の場合、暗号化は有効になりません。 ファイルを再度開くときに、認証用のパスワードを入力します。ファイルの暗号化をキャンセルします。
Vimで、
:set key=
コマンドを実行して暗号化をキャンセルします。 現在のファイルから暗号化キーをクリアします。:wq
と入力して変更を保存し、Vimを終了します。vim < File name>
コマンドを実行して、ファイルを開きます。 パスワードの入力を求められません。
コマンドの実行
を実行します。Run the
! pwd
コマンドを実行して、Vimを終了せずに現在の作業ディレクトリを照会します。を実行します。Run the
! ls
コマンドを実行して、Vimを終了することなく、現在のディレクトリ内のファイルとファイルフォルダを照会します。
複数のウィンドウでファイルを変更
vim -o <Name of File 1> <Name of File 2>
コマンドを実行して、2つのウィンドウでファイルを同時に開きます。 Vimを終了するときは、exitコマンドを別途実行します。:n
と入力して、編集用の別のウィンドウに切り替えます。:N
と入力して前のウィンドウに戻り、編集します。
ヘルプ情報の取得
ターミナルで
vim -- help
コマンドを実行し、Vimコマンドのヘルプ情報を表示します。通常モードで
:help
: ヘルプ情報を表示します。 Vimヘルプドキュメントは読み取り専用です。:q
と入力してヘルプドキュメントを終了します。:help i
:i
コマンドのヘルプ情報を照会します。:help yy
:yy
コマンドのヘルプ情報を照会します。:set nu
: 行番号を照会します。
例
設定ファイルの変更
example.confファイルの最初の行としてLocation
を挿入するには、次の手順を実行します。
vim example.conf
コマンドを実行してファイルを開き、通常モードに入ります。カーソルがファイルの最初の文字に移動したら、
i
を押して挿入モードに入ります。[場所]
を入力し、Enterキーを押します。Esc
キーを押して挿入モードを終了します。:wq
と入力してファイルを保存し、Vimを終了します。
特定の行にコンテンツを挿入する
例の10行目の先頭に#
を挿入します。 confファイルは、次の手順を実行します。
vim example.conf
コマンドを実行してファイルを開き、通常モードに入ります。カーソルを行10に移動するには、
:10
と入力します。i
を押して挿入モードに入ります。#
を入力します。Esc
キーを押して挿入モードを終了します。:wq
と入力してファイルを保存し、Vimを終了します。
検索と挿入コンテンツ
example.confファイルのInclude conf.mo dules.d/*.conf
行の下の行にLoadModule rewrite_module modules/mod_rewrite.so
を挿入するには、次の手順を実行します。
vim example.conf
コマンドを実行してファイルを開き、通常モードに入ります。/Include conf.mo dules.d/*.conf
コマンドを実行して、挿入操作を実行する行を見つけます。i
を押して挿入モードに入ります。LoadModule rewrite_module modules/mod_rewrite.so
コマンドを実行します。Esc
キーを押して挿入モードを終了します。:wq
と入力してファイルを保存し、Vimを終了します。
コンテンツの削除
example.confファイルの #Listen 12.34.XX:XX:80
行とListen 80行の先頭にある#
を削除するには、次の手順を実行します。
vim example.conf
コマンドを実行してファイルを開き、通常モードに入ります。/#Listen 12.34.XX:XX:80
コマンドを実行して、削除操作を実行する行を見つけます。 このようにして、カーソルは#
記号の上に移動します。x
を押して#
を削除します。カーソルをListen 80に移動し、
dd
を押してListen 80が存在する行を削除します。:wq
と入力して変更したファイルを保存し、Vimを終了します。
Docker.yamlファイルの変更
docker-compose.yaml
ファイルを作成および変更します。
複数行からコメント区切り文字を削除
コメント区切り文字 (
#
) が行頭にある場合, コメント区切り文字の前後に空白文字が存在する場合があります。# This is a comment # Another comment # Yet another comment
各行のコメント区切り文字の前後の空白文字 (スペースやインデントなど) を削除するには、次のコマンドを実行します。
:%s/^\s*#\s\?//
次のパラメータに注意してください。
^
: 行の先頭に一致します。\s *
: 任意の数の空白文字 (インデント) に一致します。#
: コメントの区切り文字。\s\?
: コメント区切り文字の後のスペースなど、オプションの空白文字に一致します。//
: 一致するコンテンツを空のコンテンツに置き換えて削除します。
コマンドはファイル全体をトラバースします。 次の例では、変更されたファイルの内容を示します。
This is a comment Another comment Yet another comment
更新Vim
現在のオペレーティングシステムが提供するVimがビジネス要件を満たしていない場合は、コマンドを実行してVimを更新します。 コマンドは、オペレーティングシステムに基づいて変化し得る。
Alibaba Cloud Linux 2および3
sudo yum update vim
CentOS 7およびCentOS 8
sudo yum update vim
フェドラ
sudo yum update vim
UbuntuとDebian
sudo apt upgrade vim
openSUSE
sudo zypper update vim
よくある質問
ファイルを終了するときに「No Write... 」メッセージが表示された場合はどうすればよいですか?
原因: ファイルは変更されましたが、保存されませんでした。
解決策: 変更したファイルを保存して終了するには、
:wq
と入力します。 ファイルを保存せずに終了するには、: q!
.
テキストを入力できない場合はどうすればよいですか?
原因: VimエディターはVisualモードで動作する可能性があります。
解決策:
Esc
キーを押して通常モードに戻り、挿入モードに入ります。
ファイルを保存できない場合はどうすればよいですか?
原因: 必要な権限がない可能性があります。 ファイルまたはファイルが格納されているディレクトリに対する書き込み権限がありません。 たとえば、
/etc/hosts
や/etc/nginx/nginx.conf
などのシステム構成ファイルを変更するには、スーパーユーザー権限が必要です。解決策1:
sudo
コマンドを実行して、Vimをスーパーユーザーとして起動します。 たとえば、sudo vim example.conf
コマンドを実行します。解決策2:
: w! sudo tee %
コマンドを実行して、現在のファイルを管理者として保存します。 設定ファイルのアクセス権限または所有権を変更するには、sudo chown
コマンドまたはsudo chmod
コマンドを実行します。
aの場合はどうしますか。swpファイルが存在しますか?
原因: 別のVimセッションによってファイルが開かれます。
解決策: 別のVimセッションがファイルを編集しているかどうかを確認するには、
. swp
ファイルを実行してll -a
コマンドを実行し、変更のためにファイルを開きます。:recover
コマンドを実行してファイルを復元し、ファイルを変更することもできます。