2012-03-02 12 views
5

私は理解されるように、wは、3つのグループに分割テキストによるワード境界を認識します(シンボル)vimでは、カスタム単語境界の動きをどうやって作るのですか? <code>iskeyword</code>設定で指定され</p> <p>1)文字(アルファベット、数字、および下線)</p> <p>2)他の非印刷可能文字:

3)空白文字は

あなたはそれが唯一のオーバージャンプ、次のグループ1に行くので、私はそれをカスタマイズしたいと思います次のグループ1またはグループ2に行くwを押すたびに"記号wo rds "

は何ほとんど働くことはこれです:iskeyword文字クラス\kを使用しています

nnoremap w /\k\+<CR>

。しかし、それは私がハイライトを変えたり、検索履歴を混乱させたり、他の何を知っているのか、私が検索を実行することをシミュレートするので、醜いです。 wコマンドのように、この作業を「きれいに」する方法はありますか?

+0

私はあなたが欲しいものをまったくフォローしません。 'W'は助けますか?空白と非空白の2つの文字グループがありますので、常に次の空白の後の最初の文字に移動します。 –

+0

いいえ、それはうまくいきません: 'W'はアルファベット文字と一緒にシンボル文字を塊ります。私が望むのは、効果的に、空白でシンボルを塊らせることです。その結果、シンボルはスキップされ、ワー​​ド境界が作成されます。 – Ein

答えて

0

私はここに多くの助けではないかもしれない..私はさえ\kは、この文脈で何を意味するのかわかりませんが、あなたは、あなたが存在する二つの当面の問題解決することができます:

nnoremap w /\k\+<CR>:nohl<CR>:call histdel("search", -1)<CR> 

それは醜いだと強調表示をしてもよいですちらつき、しかし、これは正しい方向にあなたを指摘します。

3

私はあなたがoperator pending mode、a.k.a xmap, smapとその家族を探していると思います。

最も関連性の高い例が

かもしれないあなたも似ているいくつかのテクニックを見つけるだろうとのために役に立つかもしれない:私はこれらのin other answers on SOの例をいくつか行っている

あなた

+1

私はそれを覚えています。素晴らしい答え。 – lucapette

+0

オペレータのための適切な動きをすることは素晴らしいです、そして、その答えは私にいくつかの新しいことを教えてくれました。しかし、本当に私を不幸にしているのは、 "私が検索を実行している"ということをシミュレートすることです。私はそれを使って、対応する 'xmap'と' omap'を定義する必要があります。 – Ein

+0

@Nuno:記録のために、vimscript(関数)の内部からの検索は、現在の検索パターンや検索履歴などに影響を与えない**とにかく、とにかく_other_の副作用はその同じ関数) – sehe

関連する問題