2

私はここ数日から Vim (Windows 7 の gvim) を試していますが、非常に興味深いと言わざるを得ませんが、学習曲線は急勾配です。

このフォーラムのおかげで、適切にビルドされた _vimrc ファイルができましたが、特定のパターンを無視する手法を探しています。

テキストファイルに次のような文字列があるとします。

10000000c9abcdef

同じファイルに同じ文字列があり、次のように2文字ごとに : で区切られているだけです。

10:00:00:00:c9:ab:cd:ef

または、次のような行があります。

hostname portname switchname

としても

hostname_portname_switchname

10000000c9abcdefvimを10:00:00:00:c9:ab:cd:efと一致hostname portname switchnameさせるにはどうすればよい hostname_portname_switchnameですか?

今のところ、カーソルを下に置いて10:00:00:00:c9:ab:cd:ef* を押すと、 がハイライトされて一致するだけ10:00:00:00:c9:ab:cd:efですが、どうすれば に一致させることができ10000000c9abcdefますか? または?hostname_portname_switchname_hostname portname switchname

基本的に、vimに非単語文字を無視させたい(非単語文字はスペース、タブ、:、::、コンマ、コロン、セミコロンなどであると仮定)

方法はありますか?

4

2 に答える 2

1

で一致を選択した後*、検索パターンを変更して、リテラルの非キーワード文字 ( \k\@!.) を任意の非キーワードと一致するように変更できます (オプションで\?):

:let @/ = substitute(@/, '\k\@!.', '\\%(\\k\\@!.\\)\\?', 'g')

でこれを機能_させるには、正規表現を適応させるか、:set iskeyword-=_.

于 2013-08-01T06:47:17.247 に答える
0

簡単ではありません。カーソルの下の単語を抽出し、英数字以外を削除し、[^a-z0-9]*各文字の間に挿入してから検索する関数を定義します。次に、マップ#/てその関数を呼び出します。ただし、 にも一致しhos - tnamep; ort - names - witch - nameます。

于 2013-08-01T05:25:49.883 に答える