。その上の:help iskeyword
を参照してください。基本的には、個々の文字または範囲としてカンマで区切って指定された文字のリストで構成されます。私はさまざまな構文ファイルが異なる言語のためにこれを微調整するので、これらのコマンドは識別子によって動くと思います。このために正規表現を指定できるようには見えません。
彼らは再プログラムすることができるようにWとEのような大文字の動きは見ていません。それらの "WORD"の定義は、空白で区切られた空白でない文字であり、空の各行は "WORD"としてカウントされます。
しかし、残念ながら、iskeyword
文字は、入力をiskeyword
文字のシーケンス、つまりiskeyword
文字と空白で区切って入力するだけの動作があるようです。 wとそれに関連するコマンドを使用すると、空白はスキップされますが、iskeyword
トークンとiskeyword
トークンの両方にアクセスします。
:map w /\<\w/^M
:map b ?\</\w^M
:map e /\w\>^M
/
と?
検索は両方のモードで動作するので、それは両方で動作します:ちょうど/
または?
キーストロークシーケンスは、両方のビジュアルと、コマンドモードで動作する:map
を使用して再マッピング
。もちろん、それは現在の検索パターンを奪い、:set hls
(highlightsearch
)がオンの場合、単語のハイライト/テールが強調表示されるため、醜い解決策です。
上記の検索は、アンカー演算子の動作の仕方によってはあまり満足できるものではありません。たとえば、{abc
や(abc
のようなものでa
に「着陸」させることはできません。
以下のマッピングがうまく機能します。それぞれがいくつかの検索をトリガーします。 /.
と?.
の検索は、次のまたは前の文字の に行くためのトリックとして使用されます。つまり、行の最後の文字の場合は、次の行の最初の文字に移動し、その逆の場合も同様です。
:map b ?\w^M?\W^M/.^M
:map w /\W^M/\w^M
:map e /\w^M/\W^M?.^M
まだいくつかの癖があります。例えば、のような単語のリスト:
abc
def
ghi
は非単語クラス\W
のための一致が含まれていません。マッチングには行末が含まれている必要があります。今後、この点でワットの改善は、次のように終わる行に一致するものを追加することです:
:map w /\(\W\\|$\)^M/\w^M
は、パイプの前に二重のバックスラッシュを注意してください!一番右のバックスラッシュはパイプをエスケープし、:map
コマンドの処理ではそれをコマンドデリミタとして処理しません。次に、分岐の正規表現演算子である\|
が残っています。同様の状況で、他の2つのマッピングを改善することができます。私はそれを運動として残しています。
出典
2016-10-06 20:37:29
Kaz
これはまさに私が探していたものです。ノーマル、ビジュアル、およびオペレータペンディングモードは正常に動作します。ありがとう。 – Evgeniy