2

vim atm に以下があるとしましょう:

int main () {
    printf("hello");
    return 0;
}

vimではw、単語を右に移動しますが、「単語」を構成するものは何ですか?


たとえば、 の にカーソルがある場合pprintfを押すと に移動し、別の を押すと をwスキップしてのにカーソルを置きます。なぜスキップされたのですか?(w"hhello"

別のキーを押すとw"前の)別の行に移動し、別のキーを押すとw次の行に移動します。)とが;スキップされたのはなぜですか?

そして今、カーソルはrof にありreturnます。awを押すとカーソルが上に移動し0、別のキーを押すとwカーソルが に移動します;。したがって、この場合、;前の行とは異なり、 はスキップされませんでした。どうしてこれなの?


質問が十分に明確になったことを願っていますが、これがどのように機能するかを理解しようとしています。

4

2 に答える 2

10

から:help word:

単語は、一連の文字、数字、アンダースコア、または空白以外の一連の文字で構成され、空白 (スペース、タブ、.) で区切られています。これは 'iskeyword' オプションで変更できます。空行も単語と見なされます。

代わりに大文字の W を使用する場合:

WORD は、空白で区切られた一連の空白以外の文字で構成されます。空行も WORD と見なされます。

あなたの例でwは、キーワード以外の文字のシーケンスも単語として扱います。

編集: の設定virtualeditもこれに影響します: 行末の句読点がスキップされているため、設定を解除する必要がありますw(違いを確認するには、行末に空白を追加してください)。設定virtualedit=onemoreすると、カーソルは行末を超えて 1 つのスペースで停止でき、行末の句読点はスキップされません。

于 2009-12-11T14:19:03.813 に答える
2

vim内から、次のように入力します

:help word-motions

あなたが求めるすべての説明が得られます。

于 2009-12-11T14:19:27.010 に答える