モーション

Nvim の :help ページ。 生成されたもので、ソースtree-sitter-vimdoc パーサーを使用して生成されています。


カーソル移動 ナビゲーション
これらのコマンドはカーソルの位置を移動します。新しい位置が画面外にある場合、カーソルを表示するように画面がスクロールされます('scrolljump' および 'scrolloff' オプションも参照してください)。
一般的な注意
ファイル内の現在位置を知りたい場合は、"CTRL-G" コマンド CTRL-G または "g CTRL-G" コマンド g_CTRL-G を使用します。'ruler' オプションを設定すると、カーソル位置がステータスラインに継続的に表示されます(Vim の速度が少し低下します)。
経験豊富なユーザーは、hjkl キーの方が常に指の下にあるため、それらを好みます。初心者の方は、hjkl キーの機能が分からないため、矢印キーを好むことがよくあります。hjkl のニーモニック値は、キーボードを見れば明らかです。j を下向きの矢印と考えてください。
'virtualedit' オプションを設定すると、文字が存在しない位置や、複数列の文字(タブなど)内にカーソルを移動できるようになります。

1. モーションとオペレータ オペレータ

モーションコマンドは、オペレータコマンドの後で使用して、移動したテキストに対してコマンドを操作できます。つまり、モーションの前後のカーソル位置間のテキストです。オペレータは一般的に、テキストの削除または変更に使用されます。使用可能なオペレータを以下に示します。
c c 変更 d d 削除 y y レジスタへのヤンク(テキストは変更されません) ~ ~ 大文字小文字の交換('tildeop' が設定されている場合のみ) g~ g~ 大文字小文字の交換 gu gu 小文字化 gU gU 大文字化 ! ! 外部プログラムによるフィルタリング = = 'equalprg' または空の場合は C インデントによるフィルタリング gq gq テキストの整形 gw gw カーソル移動なしのテキスト整形 g? g? ROT13 エンコード > > 右シフト < < 左シフト zf zf フォールドの定義 g@ g@ 'operatorfunc' オプションで設定された関数の呼び出し モーションカウントの乗算
モーションにカウントが含まれており、オペレータにも事前にカウントがある場合、2 つのカウントが掛け合わされます。たとえば、「2d3w」は 6 つの単語を削除します。オペレータの倍増
オペレータを倍増すると、行単位で操作が行われます。最初文字の前後にあるカウントを使用する場合、その数の行が操作対象となります。したがって、3dd は 3 行を削除します。最初文字の前後にあるカウントは掛け合わされます。したがって、2y3y は 6 行をヤンクします。オペレータの結果位置
オペレータを適用した後、カーソルはほとんどの場合、操作されたテキストの先頭に置かれます。たとえば、「yfe」はカーソルを移動しませんが、「yFe」はカーソルを左に「e」に移動します(ヤンクが開始された位置)。'startofline' オプションは、「d」、「<<」、「==」、「>>」の行単位の操作のみに適用されます。
行単位 文字単位 文字単位 オペレータは、行全体または開始位置と終了位置の間の文字に影響を与えます。一般的に、行間を移動するモーションは行に影響を与え(行単位)、行内で移動するモーションは文字に影響を与えます(文字単位)。ただし、例外もあります。
排他的 包括的 文字モーションは、包括的または排他的です。包括的な場合、モーションの開始位置と終了位置は操作に含まれます。排他的な場合、バッファの末尾に向かう最後の文字は含まれません。行単位のモーションには、常に開始位置と終了位置が含まれます。プラグインは、TextYankPost イベントの v:event.inclusive フラグを確認できます。
どのモーションが行単位、包括的、または排他的であるかは、コマンドで説明されています。ただし、2 つの一般的な例外があります。1. モーションが排他的であり、モーションの終了位置が 1 列目にある場合、モーションの終了位置は前の行の末尾に移動され、モーションは包括的になります。例:「}」は段落後の最初の行に移動しますが、「d}」はその行を含みません。排他的な行単位
2. モーションが排他的であり、モーションの終了位置が 1 列目であり、モーションの開始位置が行の先頭以外の最初の非空白文字以前にある場合、モーションは行単位になります。例:段落がいくつかの空白で始まり、「d}」を行の先頭以外の最初の非空白文字で行っている場合、空白を含む段落のすべての行が削除されます。ここで put を行うと、削除された行はカーソル位置の下に挿入されます。
オペレータが保留中である場合(オペレータコマンドが入力されているが、モーションはまだない場合)、特殊なマッピングセットを使用できます。:omap を参照してください。
最初にオペレータを指定してからモーションを指定する代わりに、ビジュアルモードを使用できます。「v」でテキストの先頭位置をマークし、影響を受けるテキストの末尾にカーソルを移動してから、オペレータを押します。開始位置とカーソル位置の間のテキストが強調表示されるため、操作対象となるテキストを確認できます。これにより、はるかに自由度が高まりますが、キーストロークが多くなり、やり直し機能が制限されます。ビジュアルモードに関する章を参照してください ビジュアルモード.
モーションに「:」コマンドを使用できます。たとえば「d:call FindEnd()」。ただし、コマンドが複数行の場合、「.」で繰り返すことはできません。これは繰り返すことができます。
d:call search("f")<CR>
これは繰り返すことができません。
d:if 1<CR>
   call search("f")<CR>
endif<CR>
「:」を使用する場合、モーションはすべて文字単位の排他的になります。
強制モーション
モーションを強制的に行単位、文字単位、またはブロック単位にする
目的のタイプではないモーションを使用する必要がある場合、「v」、「V」、またはCTRL-Vをオペレータの直後に使用して、別のタイプを強制できます。例
dj
2 行を削除します
dvj
カーソル位置からカーソルの下の文字までを削除します
d<C-V>j
カーソルの下の文字とカーソルの下の文字を削除します。行単位の移動を文字単位またはブロック単位で強制的に使用する場合には注意してください。列は常に定義されるとは限りません。
o_v
v オペレータの後、モーションコマンドの前に使用する場合:モーションが行単位の場合でも、オペレータが文字単位で動作するように強制します。モーションが行単位の場合、排他的になります。モーションが既に文字単位の場合、包括的/排他的を切り替えます。これを使用して、排他的なモーションを包括的に、包括的なモーションを排他的にすることができます。
o_V
V オペレータの後、モーションコマンドの前に使用する場合:モーションが文字単位の場合でも、オペレータが行単位で動作するように強制します。
o_CTRL-V
CTRL-V オペレータの後、モーションコマンドの前に使用する場合:オペレータがブロック単位で動作するように強制します。これは、ビジュアルブロックモードの選択と同様に機能し、モーションの前後のカーソル位置によって角が定義されます。

2. 左右のモーション 左右のモーション

これらのコマンドは、現在の行の指定された列にカーソルを移動します。「$」を除いて、最初の列と行の末尾で停止します。「$」は次の行のいずれかに移動する場合があります。'whichwrap' オプションを使用して、一部のコマンドが行境界を越えて移動するように調整できます。
h または h
<Left> または <Left>
CTRL-H または CTRL-H <BS> <BS> 左に [count] 文字。 排他的モーション。 注意:<BS> で文字を削除する方が良い場合は、マッピングを使用します。
:map CTRL-V<BS>                X
(「CTRL-V<BS>」を入力するには、CTRL-Vキーを押し、次に<BS>キーを押します)
l または l
<Right> または <Right> <Space> <Space> 右に [count] 文字。 排他的モーション。'whichwrap' オプションを参照して、行末での動作を調整してください。
0
0 行の先頭文字へ。 排他的モーション。
<Home> <kHome> <Home> 行の先頭文字へ。 排他的モーション。上下に移動する際、次の行では同じテキスト列に留まります(可能な場合)。その他のコマンドのほとんどは、同じ画面列に留まります。<Home> は「1|」のように機能し、行の先頭が<Tab>の場合、「0」とは異なります。
^
^ 行の先頭以外の最初の非空白文字へ。 排他的モーション。カウントは無視されます。
$ <End> <kEnd> $ または <End> 行の末尾へ。カウントが指定されている場合は、[count - 1] 行下にも移動します(可能な限り)。 包括的モーション。カウントが 2 以上で、カーソルが最終行にある場合はエラーであり、カーソルは移動しません。ビジュアルモードでは、カーソルは行の最後の文字の直後に移動します。'virtualedit' がアクティブな場合、「$」はカーソルを行末を越えて行の最後の文字に移動する場合があります。
g_
g_ 行の最後の非空白文字と [count - 1] 行下へ 包括的.
g0 g<Home> g0 または g<Home> 行折り返し時('wrap' オン): 画面行の最初の文字へ移動します。 排他的な移動です。「0」とは、行幅が画面幅より広い場合に動作が異なります。行折り返ししない時('wrap' オフ): 画面上に表示されている現在の行の左端の文字へ移動します。「0」とは、行の先頭の文字が画面上に表示されていない場合に動作が異なります。
g^
g^ 行折り返し時('wrap' オン): 画面行の最初の非空白文字へ移動します。 排他的な移動です。「^」とは、行幅が画面幅より広い場合に動作が異なります。行折り返ししない時('wrap' オフ): 画面上に表示されている現在の行の左端の非空白文字へ移動します。「^」とは、行の先頭の非空白文字が画面上に表示されていない場合に動作が異なります。
gm
gm 「g0」と同様ですが、画面幅の半分だけ右へ移動します(可能な限り)。
gM
gM 「g0」と同様ですが、行のテキストの中央へ移動します。数値を指定した場合、その割合のテキスト位置へ移動します。したがって、「10gM」はテキストの先頭付近、「90gM」はテキストの終端付近になります。
g$
g$ 行折り返し時('wrap' オン): 画面行の最後の文字と[カウント-1]行下へ移動します 包括的です。「$」とは、行幅が画面幅より広い場合に動作が異なります。行折り返ししない時('wrap' オフ): 画面上に表示されている現在の行の右端の文字へ移動します。「$」とは、行の最後の文字が画面上に表示されていない場合、またはカウントが使用されている場合に動作が異なります。さらに、垂直方向の移動は列を維持し、行末へ移動しません。'virtualedit' が有効な場合は、画面行の末尾へ移動します。
g<End> g<kEnd> g<End> g$ と同様ですが、最後の文字ではなく最後の非空白文字へ移動します。
bar
| 現在の行の画面列[カウント]へ移動します。 排他的な移動です。Ceci n'est pas une pipe.
f
f{char} 右方向の{char}の[カウント]番目の出現位置へ移動します。カーソルは{char}に配置されます 包括的です。{char}はダイグラフdigraph-argとして入力できます。'encoding'がUnicodeに設定されている場合、合成文字を使用できます。utf-8-char-argを参照してください。:lmapマッピングは{char}に適用されます。挿入モードでのCTRL-^コマンドを使用して、これをオン/オフを切り替えることができます。i_CTRL-^.
F
F{char} 左方向の{char}の[カウント]番目の出現位置へ移動します。カーソルは{char}の左側に配置されます 排他的です。{char}fコマンドと同様に 入力できます。
t
t{char} 右方向の{char}の[カウント]番目の出現位置の手前まで移動します。カーソルは{char}の左側の文字に配置されます 包括的です。{char}fコマンドと同様に 入力できます。
T
T{char} 左方向の{char}の[カウント]番目の出現位置の直後まで移動します。カーソルは{char}の右側の文字に配置されます 排他的です。{char}fコマンドと同様に 入力できます。
;
; 直前のf、t、F、またはTを[カウント]回繰り返します。cpo-;を参照してください。
,
, 直前のf、t、F、またはTを逆方向に[カウント]回繰り返します。cpo-;も参照してください。

3. 上下移動 up-down-motions

k または k
<Up> または <Up> CTRL-P CTRL-P [カウント]行上へ移動します 行単位です。
j または j
<Down> または <Down>
CTRL-J または CTRL-J
<NL> または <NL> CTRL-N CTRL-N [カウント]行下へ移動します 行単位です。
gk または gk g<Up> g<Up> [カウント]表示行上へ移動します。 排他的な移動です。「k」とは、行折り返し時、およびオペレータと共に使用する場合に動作が異なります(行単位ではないため)。
gj または gj g<Down> g<Down> [カウント]表示行下へ移動します。 排他的な移動です。「j」とは、行折り返し時、およびオペレータと共に使用する場合に動作が異なります(行単位ではないため)。
-
- <minus> [カウント]行上へ移動します。最初の非空白文字に行単位で移動します 行単位
+ または +
CTRL-M または CTRL-M <CR> <CR> [カウント]行下へ移動します。最初の非空白文字に行単位で移動します 行単位
_
_ <underscore> [カウント]-1行下へ移動します。最初の非空白文字に行単位で移動します 行単位
G
G 行[カウント]へ移動します。デフォルトは最終行です。最初の非空白文字に行単位で移動します 行単位'startofline' が設定されていない場合、同じ列を維持します。Gはジャンプ移動の1つです。
<C-End>
<C-End> 行[カウント]へ移動します。デフォルトは最終行です。最後の文字に移動します 包括的です。
<C-Home> または gg <C-Home> gg 行[カウント]へ移動します。デフォルトは最初の行です。最初の非空白文字に行単位で移動します 行単位'startofline' が設定されていない場合、同じ列を維持します。
:[range]
:[range] [range]内の最終行番号にカーソルを置きます。Exモードでは、[range]内の行を出力します。[range]は単一行番号(例:「:1」または":'m")でもかまいません。Gとは異なり、このコマンドはジャンプリストを変更しません。N%
{count}% ファイルの{count}パーセントの位置へ移動します。行の先頭の非空白文字に行単位で移動します 行単位。新しい行番号を計算するために、次の式が使用されます:({count} * 行数 + 99) / 100 'startofline' オプションも参照してください。
:[range]go[to] [count] :go :goto go [count]go バッファ内の[count]バイト目へ移動します。 排他的な移動です。デフォルトの[count]は1(ファイルの先頭)です。[range]を指定した場合、その最後の数値がバイト数として使用されます。行末文字は、現在の'fileformat'設定に応じてカウントされます。line2byte()関数と'statusline'の'o'オプションも参照してください。
これらのコマンドは、指定された行へ移動します。最初または最後の行に達すると停止します。最初の2つのコマンドは、可能な限り、列を変更した最後のコマンドの後と同じ列にカーソルを置きます。「$」コマンドの後を除き、その場合はカーソルの位置は行の最後の文字になります。

4. 単語移動 word-motions

<S-Right> または <S-Right> w w [カウント]単語分前へ移動します。 排他的な移動です。
<C-Right> または <C-Right> W W [カウント]WORDS分前へ移動します。 排他的な移動です。
e
e [カウント]単語の末尾へ移動します 包括的です。空行では停止しません。
E
E [カウント]WORDの末尾へ移動します 包括的です。空行では停止しません。
<S-Left> または <S-Left> b b [カウント]単語分後ろへ移動します。 排他的な移動です。
<C-Left> または <C-Left> B B [カウント]WORDS分後ろへ移動します。 排他的な移動です。
ge
ge [カウント]単語の末尾へ後ろへ移動します 包括的です。
gE
gE [カウント]WORDの末尾へ後ろへ移動します 包括的です。
これらのコマンドは、単語またはWORDSを移動します。word
単語は、文字、数字、およびアンダースコアのシーケンス、または空白(スペース、タブ、<EOL>)で区切られた他の非空白文字のシーケンスで構成されます。これは'iskeyword'オプションで変更できます。空行も単語と見なされます。WORD
WORDは、空白で区切られた非空白文字のシーケンスで構成されます。空行もWORDと見なされます。
折り畳まれた行のシーケンスは、1文字の単語としてカウントされます。「w」と「W」、「e」と「E」は、折り畳まれた行の範囲の後の最初の単語またはWORDの先頭/末尾に移動します。「b」と「B」は、折り畳みの前の最初の単語またはWORDの先頭に移動します。
特殊ケース:「cw」と「cW」は、カーソルが非空白文字上にある場合、「ce」と「cE」のように扱われます。これはVi互換です。cpo-_を参照して動作を変更してください。
特別なケース: "w"モーションをオペレータと組み合わせて使用し、移動した最後の単語が行末にある場合、その単語の末尾が操作対象テキストの末尾となり、次の行の先頭単語にはなりません。
元のViの実装における"e"はバグがあります。例えば、前の行が空の場合、"e"コマンドは行の先頭文字で停止します。しかし、"2e"を使用すると、これは発生しません。Vimでは"ee"と"2e"は同じで、より論理的です。ただし、これによりViとVimの間に小さな非互換性が生じます。

5. テキストオブジェクトモーション object-motions

(
( [count] 前方へ。 排他的 モーション。
)
) [count] 後方へ。 排他的 モーション。
{
{ [count] 段落 前方へ。 排他的 モーション。
}
} [count] 段落 後方へ。 排他的 モーション。
]]
]] [count] セクション 後方へ、または先頭列の次の"{"へ。オペレータの後で使用すると、先頭列の"}"の下でも停止します。 排他的 行単位排他的 が適用されることが多いことに注意してください。
][
][ [count] セクション 後方へ、または先頭列の次の'}'へ。 排他的 行単位排他的 が適用されることが多いことに注意してください。
[[
[[ [count] セクション 前方へ、または先頭列の前の"{"へ。 排他的 行単位排他的 が適用されることが多いことに注意してください。
[]
[] [count] セクション 前方へ、または先頭列の前の"}"へ。 排他的 行単位排他的 が適用されることが多いことに注意してください。
これらのコマンドは3種類のテキストオブジェクトを移動します。

文は、'.'、'!'、または'?'で終わり、行末、またはスペースまたはタブのいずれかで区切られます。'.'、'!'、または'?'の後には、スペース、タブ、または行末の前に任意の数の閉じ括弧 ')', ']', '"'、および ''' が配置される場合があります。段落およびセクションの境界も文の境界です。 'cpoptions' に 'J' フラグが存在する場合は、句読点の後に少なくとも2つのスペースが必要です。<Tab>は空白として認識されません。文の定義は変更できません。
段落
段落は、各空行の後、および'paragraphs'オプションで指定された文字のペアである一連の段落マクロのそれぞれで始まります。デフォルトは "IPLPPPQPP TPHPLIPpLpItpplpipbp" で、マクロ ".IP"、".LP" などに対応します(これらはnroffマクロなので、ドットは先頭列になければなりません)。セクションの境界も段落の境界です。空白行(空白のみを含む行)は段落の境界ではないことに注意してください。**注記:** これには、先頭列の '{' または '}' は含まれません。
セクション
セクションは、先頭列の改ページ(<C-L>)の後、および'sections'オプションで指定された文字のペアである一連のセクションマクロのそれぞれで始まります。デフォルトは "SHNHH HUnhsh" で、nroffマクロ ".SH"、".NH"、".H"、".HU"、".nh"、および ".sh" でセクションが開始されるように定義されています。
"]]" と "[[" コマンドは先頭列の '{' で停止します。これは、Cプログラムの関数の開始を見つけるのに役立ちます。先頭列の '}'、つまりC関数の終わりを検索するには、"]["(前方)または "[]"(後方)を使用します。コマンドの先頭文字によって検索方向が決まることに注意してください。
'{' または '}' が先頭列になく、それでも "[[" と "]]" を使用したい場合は、次のマッピングを試してください。
:map [[ ?{<CR>w99[{
:map ][ /}<CR>b99]}
:map ]] j0[[%/{<CR>
:map [] k$][%?}<CR>
[以下をそのまま入力してください、<>を参照]

6. テキストオブジェクト選択 object-select text-objects

v_a v_i
これは、ビジュアルモード中またはオペレータの後でのみ使用できる一連のコマンドです。"a"で始まるコマンドは空白を含むオブジェクトを選択し、"i"で始まるコマンドは空白を含まない内部オブジェクト、または空白のみを選択します。したがって、"inner"コマンドは常に"a"コマンドよりも少ないテキストを選択します。
また、最後の検索パターンを操作するgngNも参照してください。
v_aw aw aw "a word"、[count] 個の単語を選択します(wordを参照)。先頭または末尾の空白は含まれますが、カウントされません。ビジュアル行モードで使用すると、"aw"はビジュアル文字モードに切り替わります。
v_iw iw iw "inner word"、[count] 個の単語を選択します(wordを参照)。単語間の空白もカウントされます。ビジュアル行モードで使用すると、"iw"はビジュアル文字モードに切り替わります。
v_aW aW aW "a WORD"、[count] 個のWORDを選択します(WORDを参照)。先頭または末尾の空白は含まれますが、カウントされません。ビジュアル行モードで使用すると、"aW"はビジュアル文字モードに切り替わります。
v_iW iW iW "inner WORD"、[count] 個のWORDを選択します(WORDを参照)。単語間の空白もカウントされます。ビジュアル行モードで使用すると、"iW"はビジュアル文字モードに切り替わります。
v_as as as "a sentence"、[count] 個の文を選択します(sentenceを参照)。ビジュアルモードで使用すると、文字単位になります。
v_is is is "inner sentence"、[count] 個の文を選択します(sentenceを参照)。ビジュアルモードで使用すると、文字単位になります。
v_ap ap ap "a paragraph"、[count] 個の段落を選択します(paragraphを参照)。例外:空白行(空白のみを含む行)も段落の境界です。ビジュアルモードで使用すると、行単位になります。
v_ip ip ip "inner paragraph"、[count] 個の段落を選択します(paragraphを参照)。例外:空白行(空白のみを含む行)も段落の境界です。ビジュアルモードで使用すると、行単位になります。
a] v_a] v_a[ a] a[ a[ "a [] block"、[count] 個の '[' ']' ブロックを選択します。これは、[count] 個の閉じられていない '[' まで後方に移動し、対応する ']' を検索します。囲まれたテキストは '[' と ']' を含めて選択されます。cpo-M オプションフラグを使用して、エスケープされたブラケットを処理します。ビジュアルモードで使用すると、文字単位になります。
i] v_i] v_i[ i] i[ i[ "inner [] block"、[count] 個の '[' ']' ブロックを選択します。これは、[count] 個の閉じられていない '[' まで後方に移動し、対応する ']' を検索します。囲まれたテキストは '[' と ']' を除いて選択されます。"[]" のような空の内部ブロックを選択しようとするとエラーになります。cpo-M オプションフラグを使用して、エスケープされたブラケットを処理します。ビジュアルモードで使用すると、文字単位になります。
a) v_a) a) a( a( vab v_ab v_a( ab ab "a block"、[count] 個のブロックを選択します。 "[count] [(" から対応する ')' まで、'(' と ')' を含みます([(を参照)。括弧の外側の空白は含まれません。cpo-M オプションフラグを使用して、エスケープされた括弧を処理します。ビジュアルモードで使用すると、文字単位になります。
i) v_i) i) i( i( vib v_ib v_i( ib ib "inner block"、[count] 個のブロックを選択します。 "[count] [(" から対応する ')' まで、'(' と ')' を除きます([(を参照)。カーソルが () ブロック内にない場合、次の '(' を検索します。"()" のような空の内部ブロックを選択しようとするとエラーになります。cpo-M オプションフラグを使用して、エスケープされた括弧を処理します。ビジュアルモードで使用すると、文字単位になります。
a> v_a> v_a< a> a< a< "a <> block"、[count] 個の <> ブロックを選択します。[count] 番目の一致しない '<' から対応する '>' まで、'<' と '>' を含みます。cpo-M オプションフラグを使用して、エスケープされた '<' と '>' を処理します。ビジュアルモードで使用すると、文字単位になります。
i> v_i> v_i< i> i< i< "inner <> block"、[count] 個の <> ブロックを選択します。[count] 番目の一致しない '<' から対応する '>' まで、'<' と '>' を除きます。" <> " のような空の内部ブロックを選択しようとするとエラーになります。cpo-M オプションフラグを使用して、エスケープされた '<' と '>' を処理します。ビジュアルモードで使用すると、文字単位になります。
v_at at at "a tag block"、[count] 個のタグブロックを選択します。[count] 番目の一致しない "<aaa>" から対応する "</aaa>" まで、"<aaa>" と "</aaa>" を含みます。詳細は tag-blocks を参照してください。ビジュアルモードで使用すると、文字単位になります。
v_it it it "inner tag block"、[count] 個のタグブロックを選択します。[count] 番目の一致しない "<aaa>" から対応する "</aaa>" まで、"<aaa>" と "</aaa>" を除きます。詳細は tag-blocks を参照してください。ビジュアルモードで使用すると、文字単位になります。
a} v_a} a} a{ a{ v_aB v_a{ aB aB "a Block"、[count] 個のブロックを選択します。[count] [{ から対応する "}" まで、"{" と "}" を含みます([{を参照)。cpo-M オプションフラグを使用して、エスケープされた中括弧を処理します。ビジュアルモードで使用すると、文字単位になります。
i} v_i} i} i{ i{ v_iB v_i{ iB iB "inner Block"、[count] 個のブロックを選択します。[count] [{ から対応する "}" まで、"{" と "}" を除きます([{を参照)。"{}" のような空の内部ブロックを選択しようとするとエラーになります。cpo-M オプションフラグを使用して、エスケープされた中括弧を処理します。ビジュアルモードで使用すると、文字単位になります。
a" v_aquote aquote a' v_a' a' a` v_a` a` "a quoted string"。前の引用符から次の引用符までのテキストを選択します。'quoteescape' オプションを使用して、エスケープされた引用符をスキップします。1行内でのみ機能します。カーソルが引用符の始点にある場合、Vim は行の先頭から検索して、どの引用符のペアが文字列を形成しているかを判断します。後続の空白文字は含まれますが、空白文字がない場合は、先行の空白文字が含まれます。ビジュアルモードで使用すると、文字単位になります。ビジュアルモードでこのオブジェクトを繰り返すと、別の文字列が含まれます。現在、カウントは使用されていません。
i" v_iquote iquote i' v_i' i' i` v_i` i` a"、a'、a`と同様ですが、引用符は除外され、繰り返しによってビジュアル選択範囲が拡張されることはありません。特別なケース:カウントが2の場合、引用符は含まれますが、a"/a'/a`のように余分な空白文字は含まれません。
o_object-select
演算子の後に使用する場合:ブロック以外のオブジェクトの場合:"a" コマンドの場合:演算子はオブジェクトとその後の空白文字に適用されます。オブジェクトの後に空白文字がない場合、またはカーソルがオブジェクトの前にある空白文字内にある場合、オブジェクトの前にある空白文字が含まれます。"inner" コマンドの場合:カーソルがオブジェクト上にある場合、演算子はオブジェクトに適用されます。カーソルが空白文字上にある場合、演算子は空白文字に適用されます。ブロックオブジェクトの場合:演算子は、カーソルが存在するブロック、またはカーソルがブレースのいずれかにあるブロックに適用されます。"inner" コマンドの場合、周囲のブレースは除外されます。"a" コマンドの場合、ブレースが含まれます。
v_object-select
ビジュアルモードで使用する場合:ビジュアル領域の開始と終了が同じ場合(「v」を入力した直後):演算子を使用する場合と同じように、1つのオブジェクトが選択されます。ビジュアル領域の開始と終了が異なる場合:ブロック以外のオブジェクトの場合、領域は1つのオブジェクトまたは次のオブジェクトまでの空白文字、または「a」オブジェクトの場合は両方によって拡張されます。これが発生する方向は、カーソルがビジュアル領域のどちら側にあるかによって異なります。ブロックオブジェクトの場合、ブロックは外側に1レベル拡張されます。
例として、小さいオブジェクトから大きいオブジェクトへとグループ化された削除コマンドのリストを示します。単一文字と整行については、既存の vi 移動コマンドが使用されることに注意してください。"dl" 文字を削除(別名:"x") dl "diw" 内部の単語を削除 diw
"daw" 単語を削除 daw
"diW" 内部のWORDを削除(WORDを参照) diW
"daW" WORDを削除(WORDを参照) daW
"dgn" 次の検索パターンの一致を削除 dgn "dd" 1行を削除 dd "dis" 内部の文を削除 dis
"das" 文を削除 das
"dib" 内部の'(' ')' ブロックを削除 dib
"dab" '(' ')' ブロックを削除 dab
"dip" 内部の段落を削除 dip
"dap" 段落を削除 dap
"diB" 内部の'{' '}' ブロックを削除 diB
"daB" '{' '}' ブロックを削除 daB
移動コマンドとオブジェクトの使用の違いに注意してください。移動コマンドは、ここ(カーソル位置)から移動先まで操作します。オブジェクトを使用する場合、カーソルがオブジェクトのどこにいても、オブジェクト全体が操作されます。たとえば、「dw」と「daw」を比較してください。「dw」はカーソル位置から次の単語の先頭までを削除し、「daw」はカーソル下の単語とその前後のスペースを削除します。
タグブロック tag-blocks
"it" および "at" テキストオブジェクトの場合、HTML と XML の対応するタグ間のブロックを選択しようとします。しかし、これらは完全に互換性がないため、いくつかの制限があります。
通常の方法は、一致する</tag>まで<tag>を選択することです。"at" の場合、タグが含まれ、"it" の場合、タグは除外されます。しかし、"it" を繰り返すと、タグが含まれます(そうでないと何も変化しません)。また、内容のないタグブロックで "it" を使用すると、先頭のタグが選択されます。
"<aaa/>" アイテムはスキップされます。大文字と小文字は区別されません。XMLの場合も同様です。
HTMLでは、対応する終了タグのない<br>や<meta ...>のようなタグを持つことが可能です。これらは無視されます。
テキストオブジェクトは、間違いに対して寛容です。余分な終了タグは無視されます。

7. マーカー mark-motions E20 E78

マーカーへのジャンプは2つの方法で行うことができます。1. (バッククォート)を使用する:カーソルは指定された位置に配置され、移動は排他的です。2. '(シングルクォート)を使用する:カーソルは指定された位置の行の先頭の空白ではない文字に配置され、移動は行単位です。mark-view
3. 上記に加えて、'jumpoptions'に"view"が含まれている場合、マーカービューも復元しようとします。これは、マーカーが設定されたときのカーソル位置とウィンドウの上端行(ウィンドウに表示される最初のバッファ行)の間の行数です。
m mark Mark m{a-zA-Z} カーソル位置にマーカー{a-zA-Z}を設定します(カーソルは移動しません。これは移動コマンドではありません)。
m' m` m'またはm` 前のコンテキストマーカーを設定します。これは "''" または "``" コマンドでジャンプできます(カーソルは移動しません。これは移動コマンドではありません)。
m[ m] m[またはm] '[または']マーカーを設定します。複数のコマンドで演算子をシミュレートする場合に役立ちます(カーソルは移動しません。これは移動コマンドではありません)。
m< m> m<またはm> '<または'>マーカーを設定します。gvコマンドの選択内容を変更する場合に役立ちます(カーソルは移動しません。これは移動コマンドではありません)。ビジュアルモードを設定することはできず、開始位置と終了位置のみを設定できることに注意してください。
:ma :mark E191 :[range]ma[rk] {a-zA-Z'} [range]の最後の行番号、列0にマーカー{a-zA-Z'}を設定します。デフォルトはカーソル行です。
:k
:[range]k{a-zA-Z'} :markと同じですが、マーカー名の前のスペースを省略できます。
' 'a ` `a '{a-z}{a-z} 現在のバッファ内のマーカー{a-z}にジャンプします。
'A '0 `A `0 '{A-Z0-9}{A-Z0-9} 設定されたファイル内のマーカー{A-Z0-9}にジャンプします(別のファイル内にある場合は移動コマンドではありません)。
g' g'a g` g`a g'{mark} g`{mark} {mark}にジャンプしますが、現在のバッファ内でジャンプする場合、ジャンプリストは変更しません。例
g`"
ファイルの最後に知られている位置にジャンプします。:keepjumpsも参照してください。
:marks
:marks 現在のすべてのマーカーをリストします(移動コマンドではありません)。'(')'{、および'}マーカーはリストされません。最初の列の番号はゼロです。E283
:marks {arg} {arg}に記載されているマーカーをリストします(移動コマンドではありません)。例
:marks aB
マーカー'a'と'B'をリストします。
:delm :delmarks :delm[arks] {marks} 指定されたマーカーを削除します。削除できるマーカーには、A~Zと0~9が含まれます。'マーカーは削除できません。マーカー名はリストで指定するか、ダッシュで区切った範囲で指定できます。スペースは無視されます。例
:delmarks a              deletes mark a
:delmarks a b 1    deletes marks a, b and 1
:delmarks Aa       deletes marks A and a
:delmarks p-z      deletes marks in the range p to z
:delmarks ^.[]     deletes marks ^ . [ ]
:delmarks \"              deletes mark "
:delm[arks]! 現在のバッファのすべてのマーカーを削除しますが、A~Zまたは0~9のマーカーは削除しません。変更リストもクリアします。
マーカーは、いかなる方法でも可視化されません。ファイル内の記憶されている位置にすぎません。マーカーと名前付きレジスタを混同しないでください。これらは全く無関係です。
'a - 'z 小文字のマーカー。1つのファイル内で有効 'A - 'Z 大文字のマーカー(ファイルマーカーとも呼ばれる)。ファイル間で有効 '0 - '9 番号付きのマーカー。.shadaファイルから設定
小文字のマーカー 'a から 'z は、ファイルがバッファリストに残っている限り記憶されます。ファイルバッファリストから削除すると、そのすべてのマーカーが失われます。マーカーを含む行を削除すると、そのマーカーは消去されます。
小文字のマーカーは、演算子と組み合わせて使用できます。例:"d't" は、カーソル位置からマーカー 't までの行を削除します。ヒント:'t マーカーを上部、'b マーカーを下部などに使用します。小文字のマーカーは、元に戻すときとやり直すときに復元されます。
大文字のマーカー 'A' から 'Z' はファイル名を含みます。これらを使用してファイル間を移動できます。大文字マーカーを演算子と共に使用できるのは、そのマーカーが現在のファイル内にある場合のみです。行番号の挿入/削除や他のファイルの一時的な編集を行っても、マーカーの行番号は正しく維持されます。'shada' オプションが空でない場合、大文字マーカーは .shada ファイルに保持されます。shada-file-marks を参照してください。
番号付きマーカー '0' から '9' はかなり異なります。これらは直接設定できません。shada-file を使用する場合にのみ存在します。基本的に '0' は最後にVimを終了した時のカーソルの位置、'1' はその一つ前、などとなります。'shada' の "r" フラグを使用して、番号付きマーカーを保存しないファイルを指定します。shada-file-marks を参照してください。
'[ `[ '[[ 直前に変更または yank したテキストの先頭の文字へ移動します。
'] `] ']] 直前に変更または yank したテキストの最後の文字へ移動します。
演算子を実行した後、カーソルは操作されたテキストの先頭に置かれます。"p" または "P" コマンドの後、カーソルは挿入された最初の行または最後の文字に置かれる場合があります。上記の4つのコマンドは、カーソルをテキストのどちらかの端に置きます。例:10行を yank した後に最後の行へ移動するには "10Y']" とします。"p" コマンドで複数行を挿入した後に、最後に挿入された行へ移動するには "p']" とします。これは挿入されたテキストにも有効です。
注記:テキストを削除した後、ブロック単位のビジュアルモードを使用する場合を除き、開始位置と終了位置は同じです。現在のファイルでまだ変更が行われていない場合は、これらのコマンドは機能しません。
'< `< '<< 現在のバッファで最後に選択されたビジュアル領域の最初の行または文字へ移動します。ブロックモードの場合、最初の行の最後の文字になることもあります(ブロックを定義できるようにするため)。
'> `> '>> 現在のバッファで最後に選択されたビジュアル領域の最後の行または文字へ移動します。ブロックモードの場合、最後の行の先頭の文字になることもあります(ブロックを定義できるようにするため)。'selection' が適用されることに注意してください。位置はビジュアル領域の直後になる場合があります。
'' `` '' `` 最新のジャンプ前の位置、または最後の "m'" または "m`" コマンドが実行された位置へ移動します。:keepjumps コマンド修飾子が使用された場合は設定されません。restore-position も参照してください。
'quote `quote '"" 最後に現在のバッファを終了した時のカーソル位置へ移動します。デフォルトでは最初の行の先頭の文字です。各開いているファイルに対してこれを使用する方法については、last-position-jump を参照してください。バッファごとに1つの位置のみが記憶され、ウィンドウごとに1つ記憶されるわけではありません。バッファがウィンドウに表示されている限り、位置は変更されません。マーカーは :wshada が実行されたときにもリセットされます。
'^ `^ '^^ 最後に挿入モードが停止した時のカーソルの位置へ移動します。gi コマンドで使用されます。:keepjumps コマンド修飾子が使用された場合は設定されません。
'. `. '.. 最後の変更が行われた位置へ移動します。位置は変更が開始された場所、またはその付近にあります。コマンドが複数の変更として実行される場合、位置はコマンドが変更したものの終わり付近になることがあります。例えば、単語を挿入する場合、位置は最後の文字になります。以前の変更へ移動するには g; を使用します。
'( `( '(( 現在の文の先頭へ移動します(|(| コマンドと同じ)。
') `) ')) 現在の文の末尾へ移動します(|)| コマンドと同じ)。
'{ `{ '{{ 現在の段落の先頭へ移動します(|{| コマンドと同じ)。
'} `} '}} 現在の段落の末尾へ移動します(|}| コマンドと同じ)。
これらのコマンド自体はマーカーではありませんが、マーカーへジャンプします。
]'
] カーソル下の小文字マーカーのある次の行(行の先頭の空白でない文字)に[count]回移動します。
]`
]` カーソル後方の小文字マーカーに[count]回移動します。
['
[' カーソル前の小文字マーカーのある前の行(行の先頭の空白でない文字)に[count]回移動します。
[`
[ カーソル前の小文字マーカーに[count]回移動します。
:loc[kmarks] {command} :loc :lock :lockmarks マーカーを調整せずに{command}を実行します。これは、変更が完了した時点で行数が同じになるようなテキストの変更に役立ちます。警告:行数が変更された場合、変更以下のマーカーは行番号を維持するため、別のテキスト行に移動します。これらの項目は、削除/挿入された行に対して調整されません。
小文字のマーカー 'a' - 'z'
大文字のマーカー 'A' - 'Z'
番号付きマーカー '0' - '9'
最後の挿入位置 '^'
最後の変更位置 '.'
最後に影響を受けたテキスト領域 '[' と ']'
ビジュアル領域 '<' と '>'
- line numbers in placed signs
- line numbers in quickfix positions
- positions in the |jumplist|
- positions in the |tagstack|
These items will still be adjusted:
- previous context mark ''
- the cursor position
- the view of a window on a buffer
- folds
- diffs
:kee[pmarks] {command} :kee :keep :keepmarks 現在、フィルターコマンド :range! に対してのみ効果があります。
フィルタリング後の行数がフィルタリング前と等しいかそれ以上の場合、すべてのマーカーは同じ行番号に維持されます。
行数が減少した場合、消えた行にあるマーカーは削除されます。いずれの場合も、フィルタリングされたテキスト以下のマーカーは行番号が調整され、通常どおりテキストに付随します。'cpoptions' から 'R' フラグがない場合、これは ":keepmarks" を使用した場合と同じ効果があります。
:keepj :keepjumps :keepj[umps] {command} {command}での移動は、'''.'^ マーカー、jumplist、またはchangelist を変更しません。「最後の変更」タイムスタンプを最初の行に自動的に更新するなど、変更またはテキストの挿入を自動的に行い、ユーザーがその位置に移動する必要がない場合に便利です。
:let lnum = line(".")
:keepjumps normal gg
:call SetLastChange()
:keepjumps exe "normal " .. lnum .. "G"
":keepjumps" は各コマンドに対して使用しなければならないことに注意してください。関数を呼び出すと、その関数内のコマンドによってジャンプリストが変更される可能性があります。また、:keepjumps exe 'command ' の場合、"command" はジャンプを保持しません。代わりに:exe 'keepjumps command' を使用してください。

8. ジャンプ jump-motions

「ジャンプ」とは、通常、カーソルを数行移動するコマンドです。カーソルを「ジャンプ」させると、ジャンプ前のカーソルの位置が記憶されます。その位置を含む行が変更または削除されない限り、「''」と「``」コマンドを使用してその位置に戻ることができます。次のコマンドは「ジャンプ」コマンドです:'、`、G、/、?、n、N、%、(、)、[[、]]、{、}、:s、:tag、L、M、H、および新しいファイルの編集を開始するコマンド。
CTRL-O
CTRL-O ジャンプリスト内の[count]個前のカーソル位置に移動します(モーションコマンドではありません)。
<Tab> または CTRL-I <Tab> CTRL-I ジャンプリスト内の[count]個後のカーソル位置に移動します(モーションコマンドではありません)。
注記:GUIとtui-modifyOtherKeysまたはtui-csiuをサポートするターミナルでは、両方のキーがマッピングされている場合に限り、CTRL-I<Tab>と別にマッピングできます。そうでない場合、マッピングは両方に適用されます。tmuxを除く:https://github.com/tmux/tmux/issues/2705
:ju :jumps :ju[mps] ジャンプリストを出力します(モーションコマンドではありません)。
:cle :clearjumps :cle[arjumps] 現在のウィンドウのジャンプリストをクリアします。
ジャンプリスト
ジャンプはジャンプリストに記憶されます。CTRL-OおよびCTRL-Iコマンドを使用して、以前のジャンプ前のカーソル位置に移動し、再び戻ることができます。このようにして、リストの上下を移動できます。ウィンドウごとに個別のジャンプリストがあります。エントリの最大数は100に固定されています。
たとえば、3つのジャンプコマンドの後、次のジャンプリストになります。
 jump line  col file/text
   3     1    0 some text
   2    70    0 another line
   1  1154   23 end.
>
"file/text"列には、ファイル名、または現在のファイル内にあるジャンプ時のテキストが表示されます(インデントは削除され、長い行はウィンドウに収まるように切り捨てられます)。
マーカー ">" はジャンプリスト内の現在の位置を示します。:jumpsコマンドを:filterを使用してフィルタリングする場合、表示されない場合があります。
現在、1167行目にいます。その後、CTRL-Oコマンドを使用すると、カーソルは1154行目に置かれます。その結果、次のようになります。
 jump line  col file/text
   2     1    0 some text
   1    70    0 another line
>  0  1154   23 end.
   1  1167    0 foo bar
ポインタは最後に使用されたジャンプ位置に設定されます。次のCTRL-Oコマンドは上にあるエントリを使用し、次のCTRL-Iコマンドは下にあるエントリを使用します。ポインタが最後のエントリより下にある場合、これは以前CTRL-IまたはCTRL-Oを使用しなかったことを示します。この場合、CTRL-Oコマンドにより、カーソル位置がジャンプリストに追加されるため、CTRL-O前の位置に戻ることができます。この場合、1167行目です。
CTRL-O コマンドを複数回実行すると、70行目と1行目に移動します。CTRL-I を使用すると、1154行目と1167行目に再び戻ることができます。「ジャンプ」列の数字は、その位置に移動するCTRL-OまたはCTRL-Iコマンドの回数です。
ジャンプコマンドを使用すると、現在の行番号がジャンプリストの末尾に追加されます。同じ行が既にジャンプリストにある場合は、削除されます。その結果、CTRL-Oを繰り返しても、古い位置には一度しか戻れません。
:keepjumps コマンド修飾子が使用されている場合、ジャンプはジャンプリストに保存されません。ジャンプは他の場合(例::global コマンド)でも保存されません。"m'" で ' マークを設定することで、ジャンプを明示的に追加できます。setpos() 関数を呼び出しても、これは行われないことに注意してください。
1154行目に移動したCTRL-Oコマンドの後で、別のジャンプコマンド(例:「G」)を実行できます。ジャンプリストは次のようになります。
 jump line  col file/text
   4     1    0 some text
   3    70    0 another line
   2  1167    0 foo bar
   1  1154   23 end.
>
行番号は、削除および挿入された行に合わせて調整されます。ただし、":n!"のようにファイルを書き込まずに編集を終了した場合、これは失敗します。
ウィンドウを分割すると、ジャンプリストは新しいウィンドウにコピーされます。
'shada' オプションに 'item' が含まれている場合、ジャンプリストはShaDaファイルに保存され、Vimの起動時に復元されます。
ジャンプリストスタック
'jumpoptions' オプションに "stack" が含まれている場合、ジャンプリストはタグスタックのように動作します。ジャンプリストの中間から新しい位置にジャンプすると、現在の位置以降の位置は破棄されます。このオプションを設定すると、ジャンプ位置のツリーを移動できます。あるブランチを上ってから別のブランチを下っても、CTRL-Oはツリーをさらに上に移動します。
以下のようなジャンプリストがあり、CTRL-Oを使用して位置Xに3回戻ったとします。
 jump line  col file/text
   2  1260    8 mark.c                <-- location X-2
   1   685    0 eval.c                <-- location X-1
>  0   462   36 eval.c                <-- location X
   1   479   39 eval.c
   2   213    2 mark.c
   3   181    0 mark.c
(新しい)位置Yにジャンプすると、現在の位置以降の位置が削除されます。
 jump line  col file/text
   3  1260    8 mark.c                <-- location X-2
   2   685    0 eval.c                <-- location X-1
   1   462   36 eval.c                <-- location X
>
その後、さらに位置Zにジャンプすると、新しい位置Yはジャンプリストの位置Xの直後に表示され、位置Xは元のXからYへのジャンプの前にあった位置(X-1、X-2など…)に対する位置は変わりません。
 jump line  col file/text
   4  1260    8 mark.c                <-- location X-2
   3   685    0 eval.c                <-- location X-1
   2   462   36 eval.c                <-- location X
   1   100    0 buffer.c                <-- location Y
>
変更を加えると、カーソルの位置が記憶されます。元に戻すことができる変更ごとに1つの位置が記憶されます(前の変更に近い場合を除く)。変更の位置(元に戻されたものも含む)にジャンプするには、2つのコマンドを使用できます。
g; E662 g; 変更リスト内で[count]個前の位置に移動します。[count]が以前の変更位置の数より大きい場合は、最も古い変更に移動します。以前の変更がない場合は、エラーメッセージが表示されます。(移動コマンドではありません)
g, E663 g, 変更リスト内で[count]個後の位置に移動します。g; と同様ですが、逆方向です。(移動コマンドではありません)
数を使用すると、可能な限り前または後にジャンプします。したがって、「999g;」を使用して、位置がまだ記憶されている最初の変更に移動できます。変更リストのエントリ数は固定されており、ジャンプリストと同じです。
2つの元に戻せる変更が同じ行にあり、列位置が'textwidth'未満離れている場合、最後に実行された変更のみが記憶されます。これにより、例えば"xxxxx"のように、1行で小さな変更のシーケンスが、変更リストに多くの位置を追加することが防止されます。'textwidth' が0の場合は、'wrapmargin' が使用されます。それも設定されていない場合は、固定数の79が使用されます。詳細:速度低下を避けるために、文字ではなくバイトが計算に使用されます(これはマルチバイトエンコーディングの場合のみ重要です)。
テキストが挿入または削除された場合、カーソルの位置は変更の位置と多少異なる場合があります。特に、行が削除された場合。
:keepjumps コマンド修飾子が使用されている場合、変更の位置は記憶されません。
:changes
:changes 変更リストを出力します。「>」文字は現在の位置を示します。変更の直後は最新の項目の下に表示され、g;によって最新の項目の位置に移動できることを示しています。最初の列は、その位置に移動するために必要な数を示しています。例
変更行 列 テキスト
3 9 8 bla bla bla 2 11 57 foo is a bar 1 14 54 the latest changed line
The `3g;` command takes you to line 9.  Then the
output of `:changes` is:
        change line  col text ~
        >   0     9    8 bla bla bla
            1    11   57 foo is a bar
            2    14   54 the latest changed line
Now you can use "g," to go to line 11 and "2g," to go
to line 14.

9. さまざまな移動 さまざまな移動

%
% カーソル後または下にあるこの行の次の項目を見つけ、対応する項目にジャンプします。包括的な移動です。項目は次のとおりです:([{}]) 括弧または(中括弧/角括弧) (['matchpairs' オプションで変更できます]) /* */ Cスタイルのコメントの開始または終了 #if、#ifdef、#else、#elif、#endif Cプリプロセッサ条件付き(カーソルが#上にあるか、([{ が続かない場合)。他の項目については、matchitプラグインを使用できます(matchitを参照)。このプラグインはコメント内のマッチをスキップするのにも役立ちます。
'cpoptions' に "M" cpo-M が含まれている場合、括弧と中括弧の前にあるバックスラッシュは無視されます。"M" がない場合、バックスラッシュの数は重要です。偶数のバックスラッシュは奇数のバックスラッシュと一致しません。したがって、「( \) )」と「\( ( \)」では、最初の括弧と最後の括弧が一致し ます。
'cpoptions' に '%' 文字が含まれていない場合 cpo-%、二重引用符内の括弧と中括弧は無視されます。ただし、1行内の括弧/中括弧の数が奇数で、その行と前の行がバックスラッシュで終わっていない場合は除きます。'(', '{', '[', ']', '}'、')' も無視されます(シングルクォート内の括弧と中括弧)。これはCではうまく機能しますが、シングルクォートが文字列に使用されるPerlなどでは機能しません。
コメント内のマッチについては、特別な処理は行われません。matchitプラグインを使用するか、マッチを引用符で囲むことができます。
カウントは許可されていません。{count}% は、ファイルの下から{count}パーセントの位置の行にジャンプします N%。#if/#else/#endif で '%' を使用すると、行単位の移動になります。
[(
[( [count]個前の対応していない '(' に移動します。排他的な移動です。
[{
[{ [count]個前の対応していない '{' に移動します。排他的な移動です。
])
]) [count]個後の対応していない ')' に移動します。排他的な移動です。
]}
]} [count]個後の対応していない '}' に移動します。排他的な移動です。
上記の4つのコマンドを使用して、現在のコードブロックの先頭または末尾に移動できます。コードブロックの反対側の "(", ")", "{"、または "}" に "%" を実行するのと似ていますが、コードブロック内のどこからでもこれを実行できます。Cプログラムに非常に役立ちます。例:"case x:" にいる場合、[{ はスイッチステートメントに戻ります。
]m
]m [count]個後のメソッドの先頭に移動します(Javaまたは同様の構造化言語の場合)。メソッドの先頭ではない場合、クラスの先頭または末尾にジャンプします。排他的な移動です。]M
]M [count]個後のメソッドの末尾に移動します(Javaまたは同様の構造化言語の場合)。メソッドの末尾ではない場合、クラスの先頭または末尾にジャンプします。排他的な移動です。[m
[m [count]個前のメソッドの先頭に移動します(Javaまたは同様の構造化言語の場合)。メソッドの先頭の後ではない場合、クラスの先頭または末尾にジャンプします。カーソルの前に '{' が見つからない場合はエラーになります。排他的な移動です。[M
[M [count]個前のメソッドの末尾に移動します(Javaまたは同様の構造化言語の場合)。メソッドの末尾の後ではない場合、クラスの先頭または末尾にジャンプします。カーソルの前に '}' が見つからない場合はエラーになります。排他的な移動です。
上記の2つのコマンドは、ファイルにメソッドを含むクラスが含まれていることを前提としています。クラス定義は '{' と '}' で囲まれています。クラス内の各メソッドも '{' と '}' で囲まれています。これはJava言語に適用されます。ファイルは次のようになります。
// comment
class foo {
        int method_one() {
                body_one();
        }
        int method_two() {
                body_two();
        }
}
[この操作を試すには、テキストをコピーして新しいバッファに貼り付けてください。上記のヘルプテキストではジャンプコマンドが混同されています]
"body_two()" にカーソルを置いて "[m" を使用すると、"method_two()" の先頭にある '{' にジャンプします(明らかに、メソッドが長い場合に非常に役立ちます!)。"2[m" を使用すると、"method_one()" の先頭にジャンプします。"3[m" を使用すると、クラスの先頭にジャンプします。
[#
[# [count]個前の対応していない "#if" または "#else" に移動します。排他的な移動です。
]#
]# [count]個後の対応していない "#else" または "#endif" に移動します。排他的な移動です。
これらの2つのコマンドは、#if/#else/#endif 構造を含むCプログラムで機能します。現在の行が含まれている #if/#else/#endif の先頭または末尾に移動します。その後、 "%" を使用して対応する行に移動できます。
[star [/ [* または [/ [count]個前のCコメント "/*" の先頭に移動します。排他的な移動です。
]star ]/ ]* または ]/ [count]個後のCコメント "*/" の末尾に移動します。排他的な移動です。
H
H ウィンドウの上部(ホーム)から[count]行目(デフォルト:ウィンドウの最初の行)の最初の非空白文字に移動します 行単位'startofline' オプションも参照してください。オペレータが保留されていない限り、カーソルは'scrolloff' オプションに合わせて調整されます。その場合はテキストがスクロールする場合があります。例:"yH" は最初の表示行からカーソル行まで(包括的)を yank します。
M
M ウィンドウの中央行の最初の非空白文字に移動します 行単位'startofline' オプションも参照してください。
L
ウィンドウの一番下から[count]行目にある最初の非空白文字に移動します(デフォルト:ウィンドウの一番下の行)。 行単位の移動です。'startofline' オプションも参照してください。オペレータが保留されていない限り、カーソルは'scrolloff' オプションに合わせて調整されます。オペレータが保留されている場合は、テキストがスクロールすることがあります。例:「yL」は、カーソルから最後に表示されている行までを yank します。
<LeftMouse> マウスをクリックした画面上の位置に移動します。排他的な移動です。<LeftMouse>も参照してください。位置がステータスライン内にある場合、そのウィンドウがアクティブウィンドウになり、カーソルは移動しません。
メイン
コマンド索引
クイックリファレンス