commit
f62ea4bcb3
300
doc/eregex.jax
300
doc/eregex.jax
@ -1,92 +1,92 @@
|
|||||||
*eregex.jax*
|
*eregex.jax*
|
||||||
|
|
||||||
ファイル: eregex.vim, eregex_e.vim
|
ファイル: eregex.vim, eregex_e.vim
|
||||||
作者: AKUTSU toshiyuki <locrian@mbd.ocn.ne.jp>
|
作者: AKUTSU toshiyuki <locrian@mbd.ocn.ne.jp>
|
||||||
バージョン: 2.56
|
バージョン: 2.56
|
||||||
必要なもの: Vim version 6.1 かそれ以降。
|
必要なもの: Vim version 6.1 かそれ以降。
|
||||||
説明: eregex.vim は、拡張正規表現を Vim の正規表現に変換します。
|
説明: eregex.vim は、拡張正規表現を Vim の正規表現に変換します。
|
||||||
eregex_e.vim は、eregex.vim のコマンドを評価します。
|
eregex_e.vim は、eregex.vim のコマンドを評価します。
|
||||||
|
|
||||||
1. 使用許諾 |eregex-license-to-use|
|
1. 使用許諾 |eregex-license-to-use|
|
||||||
2. インストール |eregex-installations|
|
2. インストール |eregex-installations|
|
||||||
3. 関数 |eregex-functions|
|
3. 関数 |eregex-functions|
|
||||||
4. コマンド |eregex-commands|
|
4. コマンド |eregex-commands|
|
||||||
5. 使い方 |eregex-examples|
|
5. 使い方 |eregex-examples|
|
||||||
6. キーマップ |eregex-keymappings|
|
6. キーマップ |eregex-keymappings|
|
||||||
7. 原則 |eregex-principle|
|
7. 原則 |eregex-principle|
|
||||||
8. 内部的な変換を表す一覧 |eregex-table|
|
8. 内部的な変換を表す一覧 |eregex-table|
|
||||||
9. 特殊なオプションとアトム |eregex-options|
|
9. 特殊なオプションとアトム |eregex-options|
|
||||||
10. マルチライン |eregex-multiline|
|
10. マルチライン |eregex-multiline|
|
||||||
11. デリミタの制限 |eregex-limitation-of-delimiter|
|
11. デリミタの制限 |eregex-limitation-of-delimiter|
|
||||||
12. Vim の正規表現について |eregex-about-vimregex|
|
12. Vim の正規表現について |eregex-about-vimregex|
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
1. 使用許諾 *eregex-license-to-use*
|
1. 使用許諾 *eregex-license-to-use*
|
||||||
|
|
||||||
eregex.vim と eregex_e.vim の著作権は、作者である AKUTSU toshiyuki に
|
eregex.vim と eregex_e.vim の著作権は、作者である AKUTSU toshiyuki に
|
||||||
帰属します。しかし、改変、再配布は自由にしてかまいません。
|
帰属します。しかし、改変、再配布は自由にしてかまいません。
|
||||||
# GPL とか分かんないのだ。(^^ )>>
|
# GPL とか分かんないのだ。(^^ )>>
|
||||||
|
|
||||||
作者は本スクリプト(eregex.vim, eregex_e.vim) を使用したことによって生じた
|
作者は本スクリプト(eregex.vim, eregex_e.vim) を使用したことによって生じた
|
||||||
いかなる損害について、一切の責任を負いません。
|
いかなる損害について、一切の責任を負いません。
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
2. インストール *eregex-installations*
|
2. インストール *eregex-installations*
|
||||||
参考 |add-plugin|
|
参考 |add-plugin|
|
||||||
|
|
||||||
(1) UNIX/Linux
|
(1) UNIX/Linux
|
||||||
$HOME/.vim/plugin/eregex.vim
|
$HOME/.vim/plugin/eregex.vim
|
||||||
$HOME/.vim/plugin/eregex_e.vim
|
$HOME/.vim/plugin/eregex_e.vim
|
||||||
$HOME/.vim/doc/eregex_j.txt
|
$HOME/.vim/doc/eregex_j.txt
|
||||||
|
|
||||||
それから、次のようにして helptags の再構築をします。
|
それから、次のようにして helptags の再構築をします。
|
||||||
:helptags ~/.vim/doc
|
:helptags ~/.vim/doc
|
||||||
|
|
||||||
これで、:h :E2v とかできます。
|
これで、:h :E2v とかできます。
|
||||||
|
|
||||||
(2) MS-Windows
|
(2) MS-Windows
|
||||||
eregex_j.txt は EUC-JP です。
|
eregex_j.txt は EUC-JP です。
|
||||||
MS-Windows の場合は予め ShiftJIS にしておいてください。
|
MS-Windows の場合は予め ShiftJIS にしておいてください。
|
||||||
|
|
||||||
%HOME%\vimfiles\plugin\eregex.vim
|
%HOME%\vimfiles\plugin\eregex.vim
|
||||||
%HOME%\vimfiles\plugin\eregex_e.vim
|
%HOME%\vimfiles\plugin\eregex_e.vim
|
||||||
%HOME%\vimfiles\doc\eregex_j.txt
|
%HOME%\vimfiles\doc\eregex_j.txt
|
||||||
|
|
||||||
または、
|
または、
|
||||||
|
|
||||||
%VIM%\vimfiles\plugin\eregex.vim
|
%VIM%\vimfiles\plugin\eregex.vim
|
||||||
%VIM%\vimfiles\plugin\eregex_e.vim
|
%VIM%\vimfiles\plugin\eregex_e.vim
|
||||||
%VIM%\vimfiles\doc\eregex_j.vim
|
%VIM%\vimfiles\doc\eregex_j.vim
|
||||||
|
|
||||||
それから、次のようにして helptags の再構築をします。
|
それから、次のようにして helptags の再構築をします。
|
||||||
:helptags $HOME\vimfiles\doc
|
:helptags $HOME\vimfiles\doc
|
||||||
または、
|
または、
|
||||||
:helptags $VIM\vimfiles\doc
|
:helptags $VIM\vimfiles\doc
|
||||||
|
|
||||||
これで、:h :E2v とかできます。
|
これで、:h :E2v とかできます。
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
3. 関数 *eregex-functions* *eregex*
|
3. 関数 *eregex-functions* *eregex*
|
||||||
*E2v()*
|
*E2v()*
|
||||||
E2v({extendedregex} [, {iISCDMm}])
|
E2v({extendedregex} [, {iISCDMm}])
|
||||||
|
|
||||||
返り値は Vim の正規表現です。
|
返り値は Vim の正規表現です。
|
||||||
>
|
>
|
||||||
:let vimregex = E2v('(?<=abc),\d+,(?=xzy)','i')
|
:let vimregex = E2v('(?<=abc),\d+,(?=xzy)','i')
|
||||||
:echo vimregex
|
:echo vimregex
|
||||||
\c\%(abc\)\@<=,\d\+,\%(xzy\)\@=
|
\c\%(abc\)\@<=,\d\+,\%(xzy\)\@=
|
||||||
<
|
<
|
||||||
オプションの詳しい説明は |eregex-options| や |eregex-multiline|
|
オプションの詳しい説明は |eregex-options| や |eregex-multiline|
|
||||||
を見てください。
|
を見てください。
|
||||||
|
|
||||||
E2v("","V")
|
E2v("","V")
|
||||||
返り値は eregex.vim のバージョンです。
|
返り値は eregex.vim のバージョンです。
|
||||||
>
|
>
|
||||||
:echo E2v('','V')
|
:echo E2v('','V')
|
||||||
248
|
248
|
||||||
<
|
<
|
||||||
E2v({replacement}, {R1,R2,R3})
|
E2v({replacement}, {R1,R2,R3})
|
||||||
これは、:S/pattern/to/ の "to" の部分で使う文字列を返します。
|
これは、:S/pattern/to/ の "to" の部分で使う文字列を返します。
|
||||||
>
|
>
|
||||||
E2v('\r,\n,\&,&,\~,~', 'R1') => \n,\r,\&,&,\~,~
|
E2v('\r,\n,\&,&,\~,~', 'R1') => \n,\r,\&,&,\~,~
|
||||||
E2v('\r,\n,\&,&,\~,~', 'R2') => \r,\n,&,\&,~,\~
|
E2v('\r,\n,\&,&,\~,~', 'R2') => \r,\n,&,\&,~,\~
|
||||||
@ -94,7 +94,7 @@ E2v({replacement}, {R1,R2,R3})
|
|||||||
<
|
<
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
4. コマンド *eregex-commands*
|
4. コマンド *eregex-commands*
|
||||||
*:E2v*
|
*:E2v*
|
||||||
:[range]E2v [iISCDMm]
|
:[range]E2v [iISCDMm]
|
||||||
Extended regex To Vim regex.
|
Extended regex To Vim regex.
|
||||||
@ -124,20 +124,20 @@ E2v({replacement}, {R1,R2,R3})
|
|||||||
Vglobal
|
Vglobal
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
5. 使い方 *eregex-examples*
|
5. 使い方 *eregex-examples*
|
||||||
|
|
||||||
(1) :E2v コマンド
|
(1) :E2v コマンド
|
||||||
|
|
||||||
次の拡張正規表現の行にカーソルを置く。
|
次の拡張正規表現の行にカーソルを置く。
|
||||||
|
|
||||||
(\d{1,3})(?=(\d\d\d)+($|\D))
|
(\d{1,3})(?=(\d\d\d)+($|\D))
|
||||||
|
|
||||||
んで、:E2v を実行すると、次のようになる。
|
んで、:E2v を実行すると、次のようになる。
|
||||||
|
|
||||||
\(\d\{1,3}\)\%(\(\d\d\d\)\+\($\|\D\)\)\@=
|
\(\d\{1,3}\)\%(\(\d\d\d\)\+\($\|\D\)\)\@=
|
||||||
|
|
||||||
|
|
||||||
(2) :M コマンド
|
(2) :M コマンド
|
||||||
>
|
>
|
||||||
:M/<Items\s+attr="media">.+?<\/Items>/Im
|
:M/<Items\s+attr="media">.+?<\/Items>/Im
|
||||||
<
|
<
|
||||||
@ -150,7 +150,7 @@ E2v({replacement}, {R1,R2,R3})
|
|||||||
</Items>
|
</Items>
|
||||||
|
|
||||||
|
|
||||||
(3) :S コマンド
|
(3) :S コマンド
|
||||||
>
|
>
|
||||||
:'<,'>S/(\d{1,3})(?=(\d\d\d)+($|\D))/\1,/g
|
:'<,'>S/(\d{1,3})(?=(\d\d\d)+($|\D))/\1,/g
|
||||||
<
|
<
|
||||||
@ -166,7 +166,7 @@ E2v({replacement}, {R1,R2,R3})
|
|||||||
12345678 --> 12,345,678
|
12345678 --> 12,345,678
|
||||||
123456789 --> 123,456,789
|
123456789 --> 123,456,789
|
||||||
|
|
||||||
(4) :G コマンド
|
(4) :G コマンド
|
||||||
>
|
>
|
||||||
:G/^begin$/+1;/^end$/-1:S/\l+/\U&/g
|
:G/^begin$/+1;/^end$/-1:S/\l+/\U&/g
|
||||||
<
|
<
|
||||||
@ -184,24 +184,24 @@ end
|
|||||||
| HELLO THE INTERNET.
|
| HELLO THE INTERNET.
|
||||||
|end
|
|end
|
||||||
|
|
||||||
(5) :V コマンド
|
(5) :V コマンド
|
||||||
説明省略。
|
説明省略。
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
6. キーマップ *eregex-keymappings*
|
6. キーマップ *eregex-keymappings*
|
||||||
|
|
||||||
/ で行なう通常の検索と :M/ を入れ替える。
|
/ で行なう通常の検索と :M/ を入れ替える。
|
||||||
.vimrc に以下を書く。 ( MS-Windows の場合 _vimrc か _gvimrc )
|
.vimrc に以下を書く。 ( MS-Windows の場合 _vimrc か _gvimrc )
|
||||||
|
|
||||||
nnoremap / :M/
|
nnoremap / :M/
|
||||||
nnoremap ,/ /
|
nnoremap ,/ /
|
||||||
|
|
||||||
"/" で、:M/ になり、",/" で従来の "/" が使えます。
|
"/" で、:M/ になり、",/" で従来の "/" が使えます。
|
||||||
|
|
||||||
--------------------
|
--------------------
|
||||||
~/.vimrc の中に、
|
~/.vimrc の中に、
|
||||||
let eregex_replacement=3
|
let eregex_replacement=3
|
||||||
を書いておくと :S コマンドの動作が次のように変わります。
|
を書いておくと :S コマンドの動作が次のように変わります。
|
||||||
|
|
||||||
:S/pattern/\r,\n,\&,&,\~,~/
|
:S/pattern/\r,\n,\&,&,\~,~/
|
||||||
:s/pattern/\n,\r,&,\&,~,\~/
|
:s/pattern/\n,\r,&,\&,~,\~/
|
||||||
@ -217,21 +217,21 @@ nnoremap ,/ /
|
|||||||
|
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
7. 原則 *eregex-principle*
|
7. 原則 *eregex-principle*
|
||||||
eregex.vim において、
|
eregex.vim において、
|
||||||
「選択」「繰り返し」「丸カッコ」は、拡張正規表現流 を採用する。
|
「選択」「繰り返し」「丸カッコ」は、拡張正規表現流 を採用する。
|
||||||
それ以外は Vim の正規表現に従う。
|
それ以外は Vim の正規表現に従う。
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
8. 内部的な変換を表す一覧 *eregex-table*
|
8. 内部的な変換を表す一覧 *eregex-table*
|
||||||
|
|
||||||
左には拡張正規表現を書き、右には Vim 流正規表現('magic')を書く。
|
左には拡張正規表現を書き、右には Vim 流正規表現('magic')を書く。
|
||||||
|
|
||||||
選択
|
選択
|
||||||
--------------------
|
--------------------
|
||||||
:M/a|b /a\|b
|
:M/a|b /a\|b
|
||||||
|
|
||||||
繰り返し
|
繰り返し
|
||||||
--------------------
|
--------------------
|
||||||
:M/a* /a*
|
:M/a* /a*
|
||||||
:M/a+ /a\+
|
:M/a+ /a\+
|
||||||
@ -249,7 +249,7 @@ nnoremap ,/ /
|
|||||||
:M/a{3,}? /a\{-3,}
|
:M/a{3,}? /a\{-3,}
|
||||||
:M/a{,5}? /a\{-,5}
|
:M/a{,5}? /a\{-,5}
|
||||||
|
|
||||||
丸カッコ(パレン)
|
丸カッコ(パレン)
|
||||||
--------------------
|
--------------------
|
||||||
:M/(abc) /\(abc\)
|
:M/(abc) /\(abc\)
|
||||||
:M/(?:abc) /\%(abc\)
|
:M/(?:abc) /\%(abc\)
|
||||||
@ -259,20 +259,20 @@ nnoremap ,/ /
|
|||||||
:M/(?!abc) /\%(abc\)\@!
|
:M/(?!abc) /\%(abc\)\@!
|
||||||
:M/(?>abc) /\%(abc\)\@>
|
:M/(?>abc) /\%(abc\)\@>
|
||||||
|
|
||||||
文字そのもの
|
文字そのもの
|
||||||
--------------------
|
--------------------
|
||||||
:M/\\,\|,\(,\),\{,\},\?,\+,\*,\[,\] /\\,|,(,),{,},?,+,\*,\[,\]
|
:M/\\,\|,\(,\),\{,\},\?,\+,\*,\[,\] /\\,|,(,),{,},?,+,\*,\[,\]
|
||||||
:M/\^,\$ /\^,\$
|
:M/\^,\$ /\^,\$
|
||||||
|
|
||||||
拡張正規表現で使えないもの
|
拡張正規表現で使えないもの
|
||||||
--------------------
|
--------------------
|
||||||
\A, \b, \B, \G, \Z, \z
|
\A, \b, \B, \G, \Z, \z
|
||||||
これらは全て Vim のものとして扱われる。
|
これらは全て Vim のものとして扱われる。
|
||||||
(?i:a) や (?-i) なども使えない。
|
(?i:a) や (?-i) なども使えない。
|
||||||
|
|
||||||
Vim の正規表現で使えないもの
|
Vim の正規表現で使えないもの
|
||||||
--------------------
|
--------------------
|
||||||
\%(re\) 等、パレン(丸カッコ) を使うもの全般。
|
\%(re\) 等、パレン(丸カッコ) を使うもの全般。
|
||||||
~ matches the last given substitute string
|
~ matches the last given substitute string
|
||||||
\m 'magic' on for the following chars in the pattern
|
\m 'magic' on for the following chars in the pattern
|
||||||
\M 'magic' off for the following chars in the pattern
|
\M 'magic' off for the following chars in the pattern
|
||||||
@ -280,22 +280,22 @@ Vim
|
|||||||
\V the following chars in the pattern are "very nomagic"
|
\V the following chars in the pattern are "very nomagic"
|
||||||
|
|
||||||
\x hex digit: [0-9A-Fa-f]
|
\x hex digit: [0-9A-Fa-f]
|
||||||
\\x[0-9A-Fa-f]{1,2} の場合、文字そのものに変換する。
|
\\x[0-9A-Fa-f]{1,2} の場合、文字そのものに変換する。
|
||||||
\x82\xa0 => 'あ' ( shift-jis, cp932 )
|
\x82\xa0 => 'あ' ( shift-jis, cp932 )
|
||||||
ただし、0x00 と 0x0a と 0x08 は変換しません。
|
ただし、0x00 と 0x0a と 0x08 は変換しません。
|
||||||
|
|
||||||
Vim の正規表現で使えるもの
|
Vim の正規表現で使えるもの
|
||||||
--------------------
|
--------------------
|
||||||
大抵使えます。(^^;)
|
大抵使えます。(^^;)
|
||||||
\d, \D, \w, \W, \s, \S, \a, \A, \u, \U, \b, ...
|
\d, \D, \w, \W, \s, \S, \a, \A, \u, \U, \b, ...
|
||||||
\<, \>, \zs, \ze
|
\<, \>, \zs, \ze
|
||||||
\_[a-z], \%[abc], [[:alpha:]], \_., \_^, \_$
|
\_[a-z], \%[abc], [[:alpha:]], \_., \_^, \_$
|
||||||
\%23l, \%23c, \%23v, \%#
|
\%23l, \%23c, \%23v, \%#
|
||||||
など。
|
など。
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
9. 特殊なオプションとアトム *eregex-options*
|
9. 特殊なオプションとアトム *eregex-options*
|
||||||
Note: "^L" は \x0c
|
Note: "^L" は \x0c
|
||||||
|
|
||||||
eregex.vim Vim
|
eregex.vim Vim
|
||||||
---------------------------------------
|
---------------------------------------
|
||||||
@ -311,36 +311,36 @@ Vim
|
|||||||
:M/./D /\_./
|
:M/./D /\_./
|
||||||
|
|
||||||
:M/\s[^az]./M /[ \t\r\n^L]\_[^az]./
|
:M/\s[^az]./M /[ \t\r\n^L]\_[^az]./
|
||||||
:M/\s[^az].\M/ 同上。
|
:M/\s[^az].\M/ 同上。
|
||||||
|
|
||||||
:M/\s[^az]./m /[ \t\r\n^L]\_[^az]\_./
|
:M/\s[^az]./m /[ \t\r\n^L]\_[^az]\_./
|
||||||
:M/\s[^az].\m/ 同上。
|
:M/\s[^az].\m/ 同上。
|
||||||
|
|
||||||
+--------+------+--------------------------------------------------------+
|
+--------+------+--------------------------------------------------------+
|
||||||
| OPTION | ATOM | 説明 |
|
| OPTION | ATOM | 説明 |
|
||||||
+--------+------+--------------------------------------------------------+
|
+--------+------+--------------------------------------------------------+
|
||||||
| /i | \c | 大小文字の区別無し。 |
|
| /i | \c | 大小文字の区別無し。 |
|
||||||
| /I | \C | 大小文字の区別あり。 |
|
| /I | \C | 大小文字の区別あり。 |
|
||||||
+--------+------+--------------------------------------------------------+
|
+--------+------+--------------------------------------------------------+
|
||||||
| /S | | \s および \S を [ \t\r\n^L] や [^ \t\r^L] に変換する。 |
|
| /S | | \s および \S を [ \t\r\n^L] や [^ \t\r^L] に変換する。 |
|
||||||
| /C | | 補集合が改行にもマッチする。 |
|
| /C | | 補集合が改行にもマッチする。 |
|
||||||
| /D | | ドットが改行にもマッチする。 |
|
| /D | | ドットが改行にもマッチする。 |
|
||||||
+--------+------+--------------------------------------------------------+
|
+--------+------+--------------------------------------------------------+
|
||||||
| /M | \M | /S と /C を行なう。 部分マルチライン。 |
|
| /M | \M | /S と /C を行なう。 部分マルチライン。 |
|
||||||
| /m | \m | /S と /C と /D を行なう。完全マルチライン。 |
|
| /m | \m | /S と /C と /D を行なう。完全マルチライン。 |
|
||||||
+--------+------+--------------------------------------------------------+
|
+--------+------+--------------------------------------------------------+
|
||||||
|
|
||||||
Note:
|
Note:
|
||||||
(A) オプション /iImM
|
(A) オプション /iImM
|
||||||
(B) \c, \C, \m, \M
|
(B) \c, \C, \m, \M
|
||||||
(C) (?i), (?I), (?m), (?M)
|
(C) (?i), (?I), (?m), (?M)
|
||||||
これらが同時に指定された場合、上の方が優先順位が高い。
|
これらが同時に指定された場合、上の方が優先順位が高い。
|
||||||
ちなみに、(?M) と (?m) は、ブラケットの中の \s には適用されません。
|
ちなみに、(?M) と (?m) は、ブラケットの中の \s には適用されません。
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
10. マルチライン *eregex-multiline*
|
10. マルチライン *eregex-multiline*
|
||||||
|
|
||||||
とりあえず以下の表を見て。(^^;)
|
とりあえず以下の表を見て。(^^;)
|
||||||
+-----+----------------------------------------------+--------------------+
|
+-----+----------------------------------------------+--------------------+
|
||||||
| Num | eregex.vim => vim regex | ruby regex |
|
| Num | eregex.vim => vim regex | ruby regex |
|
||||||
+-----+----------------------------------------------+--------------------+
|
+-----+----------------------------------------------+--------------------+
|
||||||
@ -354,43 +354,43 @@ Vim
|
|||||||
| (3) | :M/a\s[^az].z/m => /a[ \t\r\n^L]\_[^az]\_.z/ | /a\s[^az].z/m |
|
| (3) | :M/a\s[^az].z/m => /a[ \t\r\n^L]\_[^az]\_.z/ | /a\s[^az].z/m |
|
||||||
+-----+----------------------------------------------+--------------------+
|
+-----+----------------------------------------------+--------------------+
|
||||||
|
|
||||||
(1) は、「文字クラス」が Vim 流。
|
(1) は、「文字クラス」が Vim 流。
|
||||||
(2) は、「文字クラス」が Ruby 流。
|
(2) は、「文字クラス」が Ruby 流。
|
||||||
Vim 流に言えば、改行にマッチする所が増えたので、部分マルチライン。
|
Vim 流に言えば、改行にマッチする所が増えたので、部分マルチライン。
|
||||||
Ruby 流に言えば、マルチラインでない。よってオプションは大文字の M 。
|
Ruby 流に言えば、マルチラインでない。よってオプションは大文字の M 。
|
||||||
(3) は、いわゆる Ruby 流のマルチライン。
|
(3) は、いわゆる Ruby 流のマルチライン。
|
||||||
|
|
||||||
Note:
|
Note:
|
||||||
Vim の正規表現では、/[^az]/ は改行にマッチしません。
|
Vim の正規表現では、/[^az]/ は改行にマッチしません。
|
||||||
改行にマッチしないことを明示して /[^az\n]/ と書く必要はありません。
|
改行にマッチしないことを明示して /[^az\n]/ と書く必要はありません。
|
||||||
/[^az\n]/ は意図に反して改行にもマッチします。
|
/[^az\n]/ は意図に反して改行にもマッチします。
|
||||||
よって、本来 /[^ \t\r\n^L]/ とするべきところを、/[^ \t\r^L]/ に
|
よって、本来 /[^ \t\r\n^L]/ とするべきところを、/[^ \t\r^L]/ に
|
||||||
変換している場合があります。
|
変換している場合があります。
|
||||||
原則的に Vim では、[^...] の中に \n を書いてはいけません。
|
原則的に Vim では、[^...] の中に \n を書いてはいけません。
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
11. デリミタの制限 *eregex-limitation-of-delimiter*
|
11. デリミタの制限 *eregex-limitation-of-delimiter*
|
||||||
|
|
||||||
:M で使える区切り文字は / と ? だけです。
|
:M で使える区切り文字は / と ? だけです。
|
||||||
:S 、:G および :V で使える区切り文字は /, #, @ です。
|
:S 、:G および :V で使える区切り文字は /, #, @ です。
|
||||||
これらの使用方法は :s 、:g 、:v と同じです。
|
これらの使用方法は :s 、:g 、:v と同じです。
|
||||||
制限も同様です。
|
制限も同様です。
|
||||||
|
|
||||||
区切り文字を @ にするといろいろ制限があります。
|
区切り文字を @ にするといろいろ制限があります。
|
||||||
|
|
||||||
一見うまくいきそうに見えてダメな例。
|
一見うまくいきそうに見えてダメな例。
|
||||||
"foo@bar.baz.co.jp" を "foo@hoge.co.jp" に置換しようとして、
|
"foo@bar.baz.co.jp" を "foo@hoge.co.jp" に置換しようとして、
|
||||||
>
|
>
|
||||||
:%s@\<foo\@bar\.baz\.co\.jp\>@foo\@hoge.co.jp@Ig
|
:%s@\<foo\@bar\.baz\.co\.jp\>@foo\@hoge.co.jp@Ig
|
||||||
<
|
<
|
||||||
は、エラーです。
|
は、エラーです。
|
||||||
Vim の正規表現で、\@ は特別な扱いを受けています。
|
Vim の正規表現で、\@ は特別な扱いを受けています。
|
||||||
==============================================================================
|
==============================================================================
|
||||||
12. Vim の正規表現について *eregex-about-vimregex*
|
12. Vim の正規表現について *eregex-about-vimregex*
|
||||||
|
|
||||||
以下 カーソルを "111,222,333" の行に置いて、:S... を実行してください。
|
以下 カーソルを "111,222,333" の行に置いて、:S... を実行してください。
|
||||||
|
|
||||||
(1)通常のサブマッチ。
|
(1)通常のサブマッチ。
|
||||||
|
|
||||||
111,222,333
|
111,222,333
|
||||||
>
|
>
|
||||||
@ -398,9 +398,9 @@ Vim
|
|||||||
<
|
<
|
||||||
666
|
666
|
||||||
|
|
||||||
(2)Vim 独自機能。
|
(2)Vim 独自機能。
|
||||||
マッチデータ($&, &, matchdata) と、サブマッチを分離できます。
|
マッチデータ($&, &, matchdata) と、サブマッチを分離できます。
|
||||||
\zs と \ze を使う。 See :h /\zs
|
\zs と \ze を使う。 See :h /\zs
|
||||||
|
|
||||||
111,222,333
|
111,222,333
|
||||||
>
|
>
|
||||||
@ -410,7 +410,7 @@ Vim
|
|||||||
|
|
||||||
|
|
||||||
(3)
|
(3)
|
||||||
以下の方が分かりやすいかも。
|
以下の方が分かりやすいかも。
|
||||||
|
|
||||||
111,222,333
|
111,222,333
|
||||||
>
|
>
|
||||||
@ -418,31 +418,31 @@ Vim
|
|||||||
<
|
<
|
||||||
111,666,333
|
111,666,333
|
||||||
|
|
||||||
\zs と \ze を使うと、マッチデータに含まれないサブマッチを操作できます。
|
\zs と \ze を使うと、マッチデータに含まれないサブマッチを操作できます。
|
||||||
|
|
||||||
(4) \_x の機能。
|
(4) \_x の機能。
|
||||||
|
|
||||||
\u で [A-Z] を表す。
|
\u で [A-Z] を表す。
|
||||||
\_u で [A-Z\n] を表す。
|
\_u で [A-Z\n] を表す。
|
||||||
\_[A-Z] は [A-Z\n] と同じ。
|
\_[A-Z] は [A-Z\n] と同じ。
|
||||||
|
|
||||||
大文字以外で改行を含む文字。
|
大文字以外で改行を含む文字。
|
||||||
\_U == \_[^A-Z]
|
\_U == \_[^A-Z]
|
||||||
|
|
||||||
\_. は改行を含む任意の文字。
|
\_. は改行を含む任意の文字。
|
||||||
|
|
||||||
|
|
||||||
(5) ^ と \_^ および $ と \_$ の違い。
|
(5) ^ と \_^ および $ と \_$ の違い。
|
||||||
|
|
||||||
$ を例にとります。
|
$ を例にとります。
|
||||||
|
|
||||||
通常 $ は
|
通常 $ は
|
||||||
(1)正規表現の一番最後。
|
(1)正規表現の一番最後。
|
||||||
(2) ) の直前。
|
(2) ) の直前。
|
||||||
(3) | の直前。
|
(3) | の直前。
|
||||||
にある場合だけ行末を表す。
|
にある場合だけ行末を表す。
|
||||||
|
|
||||||
ところが任意の場所で行末を表せるのが \_$ 。
|
ところが任意の場所で行末を表せるのが \_$ 。
|
||||||
|
|
||||||
111,222,333
|
111,222,333
|
||||||
>
|
>
|
||||||
@ -450,31 +450,31 @@ Vim
|
|||||||
<
|
<
|
||||||
111,222,333,666
|
111,222,333,666
|
||||||
|
|
||||||
ここで使っている \_$ の代わりに $ を使っても意図した結果になりません。
|
ここで使っている \_$ の代わりに $ を使っても意図した結果になりません。
|
||||||
Note:
|
Note:
|
||||||
\_^ と \_$ は perl の /m オプションとは全然違います。
|
\_^ と \_$ は perl の /m オプションとは全然違います。
|
||||||
|
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
13. 履歴
|
13. 履歴
|
||||||
revision 2.55
|
revision 2.55
|
||||||
(1) E2v() にバージョン番号や、sub-replace-special の置換を加えた。
|
(1) E2v() にバージョン番号や、sub-replace-special の置換を加えた。
|
||||||
(2) \v を 0x0b に置換するようにした。
|
(2) \v を 0x0b に置換するようにした。
|
||||||
(3) :M/pattern/ でマッチしなくても、@/ を更新した。
|
(3) :M/pattern/ でマッチしなくても、@/ を更新した。
|
||||||
|
|
||||||
revision 2.35
|
revision 2.35
|
||||||
(1) オプション S,C,D,M,m の追加と変更。
|
(1) オプション S,C,D,M,m の追加と変更。
|
||||||
|
|
||||||
revision 1.4x
|
revision 1.4x
|
||||||
(1) :S/\x2f/\\/g とかすると、:s///\\/g に変換してしまうバグ修正。
|
(1) :S/\x2f/\\/g とかすると、:s///\\/g に変換してしまうバグ修正。
|
||||||
(2) エスケープされたデリミタを検索履歴ではアンエスケープした。
|
(2) エスケープされたデリミタを検索履歴ではアンエスケープした。
|
||||||
デリミタが '@' の場合を除く。
|
デリミタが '@' の場合を除く。
|
||||||
(3) オプション m の修正。
|
(3) オプション m の修正。
|
||||||
|
|
||||||
revision 1.13
|
revision 1.13
|
||||||
:G で ! を使えるようにした。
|
:G で ! を使えるようにした。
|
||||||
|
|
||||||
revision 1.1.1.21
|
revision 1.1.1.21
|
||||||
:S の /c オプションで確認のプロンプトが見えなくなってしまう問題修正。
|
:S の /c オプションで確認のプロンプトが見えなくなってしまう問題修正。
|
||||||
|
|
||||||
-- vim:ft=help:
|
-- vim:ft=help:
|
||||||
|
Loading…
Reference in New Issue
Block a user