vimのエスケープモードでのwとWの違いは何ですか?


19

カーソルを移動するためのvim help quickrefコマンドを探しています。次の行は、両方が同じように動作するため、混乱しています。例を挙げて違いを詳しく説明してください。

N  w            N words forward
N  W            N blank-separated WORDS forward

同じ質問がeとEにも当てはまります。

回答:


34

このチートシートによると、句読点になっているようです。

w   jump by start of words (punctuation considered words)
W   jump by words (spaces separate words)
e   jump to end of words (punctuation considered words)
E   jump to end of words (no punctuation)

デモ使用 w

          ss of w

デモ使用 W

          ss of W

最初のデモwでは、カーソルが句読点に到達するのにいつヒットするかを確認し、2番目のデモでは句読点をスキップします。これは、小文字のコマンドとそれに相当する大文字のコマンドの違いです。


@slm:このような素晴らしいデモをありがとう。同様ANSを読むために、このようなデモを持つ必要はありません
rahul.deshmukhpatil

5

実際には非常に単純でw、次の単語にスキップしますが、句読点や空白文字は単語を分割します。 Wは、産業用の強力な次の単語コマンドのように、単語はタブ、スペース、改行などの空白文字で区切られます。 wあなたがそれに対処したい場合、区切り句読点でも停止します。

私は、ホスト名で最も頻繁に違いを見つけます:

birdman.cartoons.fictional.com # Fictional host

ではw、ホスト名とドットの各部分で停止します。 Wホスト名全体をスキップして、に進みます#。これらは両方も適用dし、c単語を削除、変更します。

上記の行の先頭に配置されている場合birdman.cartoons、何か他のもの3cwに置き換えるには、最初の2つの部分と中央のドットの両方を置き換えるために使用します。Wホスト名全体を再入力せずにそれを行うことはできませんでした。


2

これは、句読点が単語を区切るVimの概念にどのように影響するかを考慮することで最もよく理解される違いです。

このサンプルテキストの場合:

This line is space separated with no commas
however, this line is—note—comma, separated,see

w交渉するスペースしかないため、最初の行の各単語の最初の文字まで喜んでスキップします。2行目では句読点がひどく失敗し、各単語の最初の文字コンマとダッシュが降ります。2行目の単語から単語に移動するには、Shiftw1を使用する必要があります。

1.それでも、Vimは「is–note–comma」を1つの単語と見なします。


1

違いは、vimの内部ヘルプページで確認できます。まず、:helpwまたはWを使用してw とWの説明を取得しましょう:help W

  • w [count]ワード先に進みます。|独占| モーション。
  • W [count]ワード先へ。|独占| モーション。

ここで、wordとWORDの定義を知りたいです。:help word:help WORDでもう一度マニュアルを検索すると、それらが見つかります。

  • 単語はa sequence of letters, digits and underscores、またはa sequence of other non-blank characters, separated with white space(スペース、タブ、)で構成されます。これは「iskeyword」オプションで変更できます。空の行も単語と見なされます。
  • WORDはで構成されa sequence of non-blank characters, separated with white spaceます。空の行もWORDと見なされます。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.