Vim操作方法

[Vim問題] 検索したキーワードの末尾へカーソル移動するには?

この記事では、Vim / neovim でプラグインを使わずに「検索したキーワードの末尾へカーソル移動する」ための検索コマンドについて、ご紹介します。

[解答] /{検索キーワード}/{オフセット}

Vimの検索コマンド(/{検索キーワード})には、さらに次のようにオフセットを指定することで、検索後のカーソル位置を指定することが可能です。

/{検索キーワード}/{オフセット}<Enter> (下方向へ検索する)
?{検索キーワード}?{オフセット}<Enter> (上方向へ検索する)
オフセット実行内容
e
e0
マッチした検索キーワードの末尾へ移動する
(endの略)
eN
e+N
マッチした検索キーワードの末尾からN文字右へ移動する
(endの略)
e-Nマッチした検索キーワードの末尾からN文字左へ移動する
(endの略)
sN
s+N
bN
b+N
マッチした検索キーワードの頭からN文字右へ移動する
(start もしくは beginの略)
s-N
b-N
マッチした検索キーワードの頭からN文字左へ移動する
(start もしくは beginの略)
N
+N
マッチした検索キーワードのN行下へ移動する
-Nマッチした検索キーワードのN行上へ移動する

IT用語として、よく聞く「オフセット」ですが、次のような意味で使われています。

オフセットとは、埋め合わせ(る)、相殺する(もの)、補う、補正(する)、補正値、代償、分派などの意味を持つ英単語。ITの分野では、何かの位置を指し示す際に、基準となる位置からの差(距離、ズレ、相対位置)を表す値のことをオフセットということが多い。

オフセットとは – IT用語辞典 e-Words

つまり、今回の説明で利用する「オフセット」は、基準となる位置(=つまり検索キーワードの語頭)からの差(場所)のことを指す意味で使われていると考えラreamす。

Vimコマンド1. 検索キーワードの末尾に移動する

 /{検索キーワード}/e<Enter>
検索キーワードの末尾に移動する

Vimコマンド2. 検索したキーワードから2行下に移動する

 /{検索キーワード}/2<Enter>
検索したキーワードから2行下に移動する

Vimコマンド3. 上方向の検索キーワードの3文字目へ移動する

?{検索キーワード}?s+2<Enter>
上方向の検索キーワードの3文字目へ移動する

検索キーワードとオフセットの間も ? を指定する必要がある点に注意です。

このVimコマンドの補足情報

  • 利用頻度3.0
  • 便利さ3.0
  • 覚え易さ3.0

関連するVimヘルプ

Vim のヘルプでは下記のように解説されています。

/{pattern}/{offset}<CR> [count] 番目にマッチする {pattern} を前方検索し、
                        {offset} 行だけ上/下に移動します。linewise(行指向)

(略)

?{pattern}?{offset}<CR> [count] 番目にマッチする {pattern} を後方検索して
{offset} 行だけ上/下に移動します。linewise(行指向)

(略)

search-offset {offset}
上記の検索コマンドは指定されたパターンを検索します。”/” と “?” ではさらにオフ
セットを指定できます。オフセットには、行オフセットと文字オフセットの 2 種類あ
ります。

オフセットを指定して、マッチした場所から相対的にカーソルを移動できます:
    [num]       [num]行下、1 桁目に移動
    +[num]      [num]行下、1 桁目に移動
    -[num]      [num]行上、1 桁目に移動
    e[+num]     [num]文字右に、マッチ部分の終わりの場所から移動
    e[-num]     [num]文字左に、マッチ部分の終わりの場所から移動
    s[+num]     [num]文字右に、マッチ部分の初めの場所(start)から移動
    s[-num]     [num]文字左に、マッチ部分の初めの場所(start)から移動
    b[+num]     [num] 上記 s[+num] と同じ (begin の b)
    b[-num]     [num] 上記 s[-num] と同じ (begin の b)
    ;{pattern}  さらに検索する。//;を参照。

‘-‘ か ‘+’ を指定して [num] を省略した場合は 1 が使われます。’e’ を使ってオフ
セットを指定した場合、検索は包括的になります (カーソルが移動するであろう位置の
文字まで含めて操作の対象になります)。

例:
パターン                カーソルの位置
/test/+1                “test” の 1 行下の 1 桁目
/test/e                 “test” の最後
/test/s+2               “test” の ‘s’
/test/b-3               “test” の 3 文字前

これらのコマンドがオペレータに対して使われた場合、現在のカーソル位置から、検索
後のカーソル位置までが、操作の対象となります。ただし、行オフセットが指定された
場合は、2 つのカーソル位置の間の行全体が操作の対象となります。

パターンを検索して置換する例:
        /foo<CR>        “foo” を検索
        c//e<CR>        マッチした文字列を変更
        bar<Esc>        置換する文字を入力
        //<CR>          次のマッチへ移動
        c//e<CR>        マッチした文字列を変更
        beep<Esc>       今度は別の文字で置換
                        …

pattern – Vim日本語ドキュメント

こちらは、Vim上では下記のコマンドでヘルプを確認できます。

:help offset
:help

ヘルプで検索するときは、通常は大文字小文字は識別されませんので、どちらでも構いません。

参考書籍

こちらの書籍が参考になります。


Vim/neovim関連の書籍で、もっとも評判が良くてバイブルと呼んでる人もいる一冊です。Vim/neovimのバージョンに依存しない沢山のTips形式で、その表題通りに「思考のスピードで編集」できるようになるノウハウが詰まっています。その高い評価は Amazon のレビューからも分かる通りです。Vimmer なら必ず一度は読んでおいて間違いありません。


こちらもVim関連の書籍で評価が高い書籍の一冊です。vim-jpで見かける上級Vimmer(Vimサポーターズ)の皆様による、Vimを実践で使ったノウハウからプラグイン関連の情報が詰まっています。日本の Vim界隈を知る上でも是非一読しておきたい一冊です。

Vim/neovim の設定ファイルやプラグインなど、Vim script に関するノウハウがいくつも詰まった一冊です。日本で Vim Script をここまで深く解説している唯一の書籍と言えます。Vim力を伸ばしたいと考えるなら、絶対に避けては通れない書籍でしょう。

プロフィール
管理人
Vim太郎

Vim力アップして、そろそろ上級 Vimmer の仲間入りしたいIT系エンジニアの端くれです。読んでくる訪問者の皆様と一緒に、Vim力を上げていくことができる記事が書ければと考えています。

\フォローする/
\ シェアする /
\フォローする/
関連記事
Vim入門
タイトルとURLをコピーしました