サーチ…
検索
文字にジャンプする
f {char} - 同じ行のカーソルの右にある{char}の次のオカレンスに移動します
F {char} - 同じ行のカーソルの左にある{char}の次のオカレンスに移動します
t {char} - 同じ行のカーソルの右にある{char}の次の出現の左側に移動します
T {char} - 同じ行のカーソルの左にある{char}の次の出現の右側に移動します
を介して '結果'間を前後にジャンプします。そして、 。
さらに、 /<searchterm>
Enterで単語全体を検索することができます。
文字列の検索
* - カーソルの下にある単語の次のオカレンスに移動する
# - カーソルの下にある単語の前のオカレンスに移動する
/ searchterm
Enterを押すと、次の一致(前方検索)に移動します。あなたは? /の代わりに、検索は逆に進みます。
n (next)とN (previous)を使ってマッチの間をジャンプします。
以前の検索を表示/編集するには、 /と入力し、 上矢印キーを押します。
これらの設定も役立ちます:(注:se
は:set
と同じ:set
)
-
:se hls
HighLightSearchはすべての検索一致をハイライト表示します。使用:noh
一時的に強調表示する検索/マークをオフにする(:set noh
や:set nohls
オフになります。) -
:se is
or:set incs
turns Incremental検索をオンにすると、カーソルは自動的に次の一致にジャンプします。 (:se nois
はオフになります。) -
:se ic
seic IgnoreCase、大文字と小文字の区別をオフにします。 (:se noic
が再びオンになります。) -
:se scs
seScs SmartCaSe、IgnoreCaseが設定されているときに使用できます。大文字小文字の区別をスマートにします!例えば/the
を検索します、the
The
、ThE
ながら、など/The
のみを検索します。The
基本的な動き
備考
- すべてのモーションはオペレータコマンドの後に使用できるので、コマンドはムーブメントの到達範囲に含まれるテキストに作用します。
- オペレータのコマンドと同じように、モーションにはカウントが含まれているため、 2w ordで移動することができます。
矢印
Vimでは、通常の矢印/カーソルキー( ← ↓ ↑ → )は期待どおりに機能します。しかし、タッチたtypersのために、それは、h j の k個 リットルの代替キーを使用する方が簡単です。典型的なキーボードでは、同じ行の隣にあり、右手で簡単にアクセスできます。その中でどれがこのようになっているかを記憶するニーモニックのテクニック:
- h / l - キーボード上の4つの文字のうち、最も左/右に位置しているので、それぞれ「左/右」に相当します。
- j - 小文字の "j"は小文字のような典型的な文字の下に "下"をしているので、 "下に行く"と同じです。
- k - 逆に、小文字の "k"は、小文字のポインタのように典型的な文字の上に "上がる"ように "上がる"ので、 "上がる"と同じです。
基本的な動き
以下のすべてのコマンドは、 通常モードで実行する必要があります 。
コマンド | 説明 |
---|---|
hまたは左 | [count]文字を左に移動する |
jまたはdown | 下に[count]文字を入れる |
Kまたはアップ | 上に[count]文字を入れる |
lまたは右 | [count]文字を右に移動する |
gg | 最初の行に移動するか、 [count]番目の行に移動します |
H | 表示画面の最初の行に移動する |
M | 目に見える画面の真ん中に行く |
L | 表示画面の最後の行に移動する |
G | 最後の行に移動するか、指定されていれば[count]番目の行に移動する |
ホームまたは0 | 行の最初の文字に行く |
^ | 行の最初の空白以外の文字に移動する |
+ | 最初の空白以外の文字に1行下がる |
- | 最初の空白以外の文字に1行上がる |
$または終了 | 行の最後に行く( [count]が与えられれば、 [count - 1]行下に行く) |
| | [回数]「番目の文字に行く場合や、行の先頭に行くcount を指定しません |
f {char} | 右の包括的に[回数]「{ 文字}の目の発生に行きます |
F {char} | 左包括的に[カウント]「{ 文字}の第発生に行きます |
t {char} | 右側の排他的な {char}の出現回数[count]に行く |
T {char} | [count]番目の{char}回目の排除を左に出す |
; | 最新のf 、 t 、 FまたはTを繰り返します |
、 | 最新のf 、 t 、 FまたはTを反対方向に[count]回繰り返す |
w | 次の言葉の先頭に行く |
b | 前の単語の先頭に行く |
e | 次の言葉の終わりに行く |
ゲ | 前の単語の終わりに行く |
% | (), [], {} 、 /* */ または#if, #ifdef, #else, #elif, #endif 一致するペアに移動します。 |
{ } | 前/次の段落 |
[{ ]} | ブロックの開始/終了 |
'{char} | マークに移動する( m {char}でマークする) |
<CB> <CF> | 前/次のページ |
<CO> <CI> | "ジャンプリスト"にjumplist ます( jumplist リスト機能が必要jumplist :help jumps 参照してください) |
注: b 、 e 、およびwは、単語が文字、数字、およびアンダースコア(デフォルトではiskeyword
設定で設定可能)とiskeyword
ます。これらはそれぞれ大文字にすることもでき、空白でないものは飛ばすことができます。
注意:Vimはオペレータの動き( :help movement
)とジャンプ( :help jumplist
ジャンプ:help jumplist
)の2種類の動きを認識します。 g
( gg
、 G
、 g,
)で実行されるような動作は、変更と同様にジャンプとしてカウントされます。変更はg,
とg;
介して上記のようにナビゲート可能な独自のjumplistを取得しg;
( :help changelist
参照してください)。ジャンプはVimによってモーションコマンドとして扱われません
行間を上下に移動するとき、カーソルは期待通りに列を保持します。新しい行が短すぎると、カーソルは新しい行の末尾に移動します。列が行の終わりを超えている場合は、行の最後にカーソルが表示されます。最初の列番号は、テキストの編集や明示的な列の移動などの操作が行われるまで保持されます。
行の長さが画面の幅を超えると、テキストが折り返されます(デフォルト設定では、この動作を設定できます)。ファイル内の行ではなく、画面に表示された行を移動するには、通常のコマンドの前にgを追加します。例えば、 gjは、ファイルの同じ行にあっても、現在の位置より1行下に表示された位置にカーソルを移動します。
パターンの検索
Vimは、ファイルを検索する際に正規表現の使用をサポートしています。
検索を実行することを示す文字は/
です。
実行できる最も単純な検索は次のとおりです
/if
これにより、ファイル全体がif
すべてのインスタンスを検索します。しかし、Googleの検索if
、実際の単語のいずれかの発生に一致します。正規表現でif
、他の単語のものを内部に含みます。
例えば、私たちの検索では、 if
、 spiffy
、 endif
など、次の単語のすべてが検索に一致すると言います。
より複雑な正規表現を使用すると、より複雑な検索を行うことができます。
私たちの検索は:
/\<if\>
if
、我々の検索は完全な単語と完全一致を返すだけである。上記のspiffy
とendif
唯一、検索によって返されることはないif
。
範囲を使用することもできます。与えられたファイル:
hello1
hello2
hello3
hello4
"hello"と1〜3の数字が続く行を検索する場合は、次のようになります。
/hello[1-3]
もう一つの例:
/(?:\d*\.)?\d+
ファイル内のすべての整数と小数の数を見つけるでしょう。
特定の単語の先頭に移動する
テキストを編集するときは、一般的な作業は画面上の特定の単語に移動することです。これらの例では、 updated
れた単語にどのようにナビゲートできるかを調べます。例全体にわたり一貫性を保つために、私たちは単語の最初の文字に着くことを目指しています。
中画面ジャンプ
M $ B
このアプローチは、3回のキーストロークですばやく行うことができます。しかし、欠点は非常に一般的ではないということです。なぜなら、ターゲットラインがスクリーンの真ん中にあるのが一般的ではないからです。それでも、それほど細かい動きをしないと便利な動作です。
カウントの使用
3j f u ; ;
一見すると、これは、キーストロークの数のために、最初のアプローチから後退しているように見えるかもしれません。しかし、 Mの代わりにここでカウントを使用するので、より柔軟です。 relativenumberが有効になっている場合、使用する正しいカウントをすばやく特定できます。ターゲット単語に移動するには、と組み合わせてfを使用します。驚くほど効果的であり、確かにwを繰り返し押すよりも優れています。あなたがあなたの目標をオーバーシュートした場合; 、あなたは、後方で行くことができます。
明示的な検索
/ アップ 入力 N N
/経由でのナビゲートは非常に強力です。私たちはしばしばそれを入力することによって直接目標単語にジャンプすることができます。ここでは、最初の2文字だけをタイプして、単語と一意に一致することを期待しています。残念ながら、複数の試合がありますが、 nと次の試合にすばやくジャンプできます。
暗黙の検索
/ y スペース wを 入力
場合によっては、目標に直接向かうのではなく、目標の近くでジャンプする方が効率的かもしれません。ここでは、ターゲットのすぐ隣に、まれに発生する文字y
があることがわかります。私たちは検索語にスペースを追加して、途中で他のy
文字を打つチャンスを減らすことができます。これは、countを使う例のように、 f {char}で大きな効果を発揮するためにも使用できます 。
マークを使用して周囲を移動する
マークはブックマークに似ています。彼らはあなたがすでに行っている場所を見つけるのを助けます。
TLDR
m{a-zA-Z}
で通常モードに設定し、 '{a-zA-Z}
(一重引用符)または`{a-zA-Z}
(バックティック)で通常モードまたは視覚モードにジャンプします。小文字はバッファ内のマークで、大文字と数字はグローバルです。現在設定されているマークは:marks
、詳細は:help mark
参照してください。
マークを設定する
Vimのビルトインヘルプは次のように述べています:
m{a-zA-Z} Set mark {a-zA-Z} at cursor position (does not move
the cursor, this is not a motion command).
マークは、それが配置された行と列を追跡します。マークが設定されていること、またはマークが以前の値を持ち、上書きされていることを視覚的に確認することはありません。
マークにジャンプする
Vimのビルトインヘルプは次のように述べています:
Jumping to a mark can be done in two ways:
1. With ` (backtick): The cursor is positioned at the specified location
and the motion is exclusive.
2. With ' (single quote): The cursor is positioned on the first non-blank
character in the line of the specified location and
the motion is linewise.
Backtickは列の位置を使用しますが、一重引用符は使用しません。単純な違いは、必要に応じてマークの列の位置を無視することだけです。
視覚モードで非大域マーク間をジャンプすることで、マークに基づいてテキストを選択できるようにすることができます。
グローバルマーク
グローバルマーク(大文字)はファイル間のジャンプを可能にします。例えば、マーク、あればどのようなことが意味することであるA
に設定されているfoo.txt
から、その後、 bar.txt
(どこでも私のファイルシステムに)私はマークにジャンプ場合、私の現在のバッファが置き換えられますA
foo.txt
。 Vimは変更の保存を促します。
別のファイルのマークにジャンプすることは動きとは見なされず、バッファ内のマークにジャンプするような視覚的な選択(他のものの中でも)は機能しません。
前のファイル(この場合はbar.txt
)に戻るには、 :b[uffer] #
(つまり:b#
または:buffer#
)を使用します。
注意:
特別なマーク
Vimが自動的に設定するマークがあります(あなた自身を上書きすることができますが、そうする必要はないでしょう)。
例えば(Vimの助けを借りて言います):
`[` and `]`: jump to the first or last character of the previously changed or
yanked text. {not in Vi}
`<` and `>`: jump to the first or last line (with `'`) or character (with
<code>`</code>) of the last selected Visual area in the current
buffer. For block mode it may also be the last character in the
first line (to be able to define the block). {not in Vi}.
さらに、Vimの組み込みヘルプから:
'' `` To the position before the latest jump, or where the
last "m'" or "m`" command was given. Not set when the
:keepjumps command modifier was used.
Also see restore-position.
'" `" To the cursor position when last exiting the current
buffer. Defaults to the first character of the first
line. See last-position-jump for how to use this
for each opened file.
Only one position is remembered per buffer, not one
for each window. As long as the buffer is visible in
a window the position won't be changed.
{not in Vi}.
'. `. To the position where the last change was made. The
position is at or near where the change started.
Sometimes a command is executed as several changes,
then the position can be near the end of what the
command changed. For example when inserting a word,
the position will be on the last character.
{not in Vi}
'" `" To the cursor position when last exiting the current
buffer. Defaults to the first character of the first
line. See last-position-jump for how to use this
for each opened file.
Only one position is remembered per buffer, not one
for each window. As long as the buffer is visible in
a window the position won't be changed.
{not in Vi}.
'^ `^ To the position where the cursor was the last time
when Insert mode was stopped. This is used by the
gi command. Not set when the :keepjumps command
modifier was used. {not in Vi}
さらに、文字(
、 )
、 {
、および}
は、通常モードコマンドと同じ位置にジャンプするマークです。つまり、 '}
はノーマルモードで同じことを行います}
。
特定の行にジャンプする
コロン番号を持つ特定の行にジャンプする。ファイルの最初の行にジャンプするには
:1
23行目にジャンプするには
:23