title: 【転載】Linux で強力なエディタ Vim の使用方法
date: 2021-07-26 11:54:02
comment: false
category:
- Linux
tags: - 転載
- Linux
- Vim
この記事は、Linux で強力なエディタ Vim の使用方法 - 笨猫ブログから転載されました。
ソフトウェアの世界には、非常に長寿なものがいくつかありますが、vi はその 1 つです。この記事では、オンライン開発で最もよく使用される機能に焦点を当てています。プラグインのインストールやスクリプトの作成などは、通常は開発マシンで行われ、本番環境ではこれらの拡張機能を使用するための条件や時間がありません。この記事を読んで、この神器について大まかな印象を持っていただければ幸いです。もちろん、熟練した使用には日常的な意識的な養成が必要です。
Vim は vi の強化版であり、一般的な現代の Linux には数メガバイトの空き容量があるため、デフォルトで強化版がインストールされています。
習慣を身につける#
Vim の最大の貢献は、そのキーボードシステムです。これが Chrome、IDEA、Atom などのエディタで Vim モードが提供される理由でもあります。筆者は、多くのベテランプログラマー、アーキテクトを含む人々が、カーソルの移動に矢印キーを使用することに慣れているのを見てきました。これは間違っているとは言えませんが、これにより Vim の最も重要な要素が捨てられ、効率が大幅に低下します。h、j、k、l の使用を続けることで、今日の自分に感謝することになるでしょう。脳と指は本当に記憶力があります。十分に使ってみると、これはあなたのデフォルトの設定になります。
Vim のもう 1 つの特徴は、モードを持っていることです。合計 4 つのモードがありますが、私たちはそれらを覚える必要はありません。例を使用して理解するだけで十分です。
邪魔をしないでください#
大きなファイルを Vim で開かないでください。Vim は一度にすべてのコンテンツをメモリに読み込むため、ホストマシンのメモリがオーバーフローする可能性があります。
ファイルを開く前に、du -h
コマンドを使用してファイルサイズを確認できます。通常、100MB 以下が適しています。
よく使う操作#
以下の操作は通常モードで実行され、キーを連続して押します。
移動#
j
下に移動30j
30 行下に移動k
上に移動h
左に移動l
右に移動0
行の先頭に移動^
行の先頭の最初の文字に移動します(前にスペースがある場合)$
行の末尾に移動gg
ファイルの先頭に素早く移動- G ファイルの末尾に素早く移動
- 100G 100 行目にジャンプ
挿入モードではカーソル移動を行わないことをお勧めします。これは非効率です。
コピー:y#
yy
1 行をコピー10yy
10 行下にコピーyw
カーソルから始まる単語をコピーy$
カーソルから行末までをコピーyfB
最初の大文字 B までの内容をコピーy2fB
2 番目の大文字 B までの内容をコピー
カット:x#
カットされた内容はクリップボードに保存され、p を押すと他の場所に貼り付けることができます。
x
1 文字ずつカットします。行末の場合は前方にカットします。3x
3 つカットします。xp
行末でない場合、2 つの文字を交換します(bs から sb に変更)
削除:d#
削除された内容はクリップボードに保存され、p を押すと他の場所に貼り付けることができます。
dd
1 行を削除200dd
200 行を削除dw
1 単語を削除(お気に入りです)df"
最初の二重引用符が表示されるまで削除
貼り付け:p#
p
コピーまたはカットした内容を貼り付ける3p
コピーまたはカットした内容を 3 回貼り付ける
ビジュアルモード#
v
行モードで、一部のコンテンツを選択します。
ビジュアルモードは非常に便利なモードであり、通常モードで v を押すだけでアクセスできます。
h
、j
、k
、l
を使用して移動し、対応するコンテンツを選択します。
例えば、一部のコンテンツを選択して削除します。
ctrl+v ブロックモード#
デモ:ファイルの各行を ArrayList に追加する:
-
- コマンドモードで
%s/$/");/g
を実行して、行末にデータを追加します
- コマンドモードで
-
ESC
を押して通常モードに入り、gg
で行の先頭に戻ります
-
ctrl+v
を押してビジュアルモードに入り、G
でファイルの末尾に移動します
-
- エディタの反応に気にせずに、
I
を押して挿入モードに入力し、list.add("
を入力します
- エディタの反応に気にせずに、
-
ESC
を押して通常モードに戻ると、入力がすべての行に適用されていることがわかります
ブロックモードは列の操作も行うことができ、UE でこの神技を見たことがあります。
コマンドモード#
上記の例では、コマンドモードへの移行方法が既に示されています。通常モードで:を入力すると、コマンドモードに入ることができます
%s/$/sth/
行末にsth
を追加%s/^M//g
dos
改行文字を置換する、\^M
はctrl+v
+Enter
で入力できます:g/^s*$/d
空行とスペースのみの行を削除%s/#.*//g
#以降の文字を削除
そうです、コマンドモードでは正規表現を使用します。これらの経験は一般的です。
お気づきかもしれませんが、これはエディタウィンドウに対する sed コマンドです。
文字列の検索#
同様に、正規表現の知識も適用できます *
通常モードで/
を押すと検索に直接入力できます。対応する文字列を入力して Enter を押します。
n
次の一致を検索
N
前の一致を検索
2n
次の 2 番目の一致を検索
行き来するのがめまいがすると感じた場合は、コマンドモードでset nu
を入力して行番号を表示することができます。
マクロの録音#
これは Vim の秘密兵器と言えるでしょう。上記の例を使って説明します。
ファイルの各行を ArrayList に追加する
-
gg
を押して行の先頭に移動します
-
qa
を押してマクロの録音を開始します。a はマクロに付けた名前です
-
I
を押して挿入モードに入り、list.add("
を入力します
-
ESC
を押して通常モードに入り、$
で行の末尾にジャンプします
-
j
を押して次の行に移動し、^
で行の先頭に戻ります
-
- 再度
q
を押してマクロの録音を終了します
- 再度
-
@a
を入力してマクロをテストします
-
100@a
を入力してマクロを 100 回繰り返します。つまり、以下の 100 行に影響します
複数の異なるマクロを録音することもでき、一括操作が容易になります。
その他#
あまり使用されない他の主な機能には次のものがあります。
r
文字の置換ggVG
全体を選択u
変更を元に戻すJ
次の行と結合gU
カーソル位置の文字を大文字に変換ggguG
全体を大文字から小文字に変換%
次の一致にジャンプします。<div>
で%
を押すと、対応する</div>
にジャンプします:e /tmp/a
同じエディタ内で/tmp/a
ファイルを開きます。同じエディタのバッファはクリップボードを共有しているため、複数のファイルで簡単にコピーすることができますbp
前のバッファにジャンプbn
次のバッファにジャンプ
エディタの終了#
wq
現在のファイルを保存して終了wqa
すべてのファイルを保存して終了q!
保存せずに終了qa!
複数のファイルが開かれている場合、同時に終了
この記事では、よく使用される機能に焦点を当てて、読者がオンラインテキストを迅速に処理できるようにサポートしています。さらに多くの機能がありますが、それらは収まりませんので、自分で探索してみてください。