Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
H
home
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Murukesh Mohanan
home
Commits
d55c100e
Commit
d55c100e
authored
Mar 25, 2016
by
Murukesh Mohanan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
added new manpage settings based on
http://unix.stackexchange.com/a/271905/70524
parent
f22a24b0
Changes
9
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
43 additions
and
1763 deletions
+43
-1763
.vim/doc/eregex.jax
.vim/doc/eregex.jax
+0
-480
.vim/doc/eregex.txt
.vim/doc/eregex.txt
+0
-431
.vim/doc/haskellmode.txt
.vim/doc/haskellmode.txt
+0
-465
.vim/doc/supertab.txt
.vim/doc/supertab.txt
+0
-366
.vim/ftplugin/man.vim
.vim/ftplugin/man.vim
+33
-13
.vim/ftplugin/tex.vim
.vim/ftplugin/tex.vim
+0
-1
.vim/local/lab-laptop.vim
.vim/local/lab-laptop.vim
+6
-6
.vim/spell/en.utf-8.add
.vim/spell/en.utf-8.add
+3
-0
.vim/vimrc
.vim/vimrc
+1
-1
No files found.
.vim/doc/eregex.jax
deleted
100644 → 0
View file @
f22a24b0
*eregex.jax*
ファイル: eregex.vim, eregex_e.vim
作者: AKUTSU toshiyuki <locrian@mbd.ocn.ne.jp>
バージョン: 2.56
必要なもの: Vim version 6.1 かそれ以降。
説明: eregex.vim は、拡張正規表現を Vim の正規表現に変換します。
eregex_e.vim は、eregex.vim のコマンドを評価します。
1. 使用許諾 |eregex-license-to-use|
2. インストール |eregex-installations|
3. 関数 |eregex-functions|
4. コマンド |eregex-commands|
5. 使い方 |eregex-examples|
6. キーマップ |eregex-keymappings|
7. 原則 |eregex-principle|
8. 内部的な変換を表す一覧 |eregex-table|
9. 特殊なオプションとアトム |eregex-options|
10. マルチライン |eregex-multiline|
11. デリミタの制限 |eregex-limitation-of-delimiter|
12. Vim の正規表現について |eregex-about-vimregex|
==============================================================================
1. 使用許諾 *eregex-license-to-use*
eregex.vim と eregex_e.vim の著作権は、作者である AKUTSU toshiyuki に
帰属します。しかし、改変、再配布は自由にしてかまいません。
# GPL とか分かんないのだ。(^^ )>>
作者は本スクリプト(eregex.vim, eregex_e.vim) を使用したことによって生じた
いかなる損害について、一切の責任を負いません。
==============================================================================
2. インストール *eregex-installations*
参考 |add-plugin|
(1) UNIX/Linux
$HOME/.vim/plugin/eregex.vim
$HOME/.vim/plugin/eregex_e.vim
$HOME/.vim/doc/eregex_j.txt
それから、次のようにして helptags の再構築をします。
:helptags ~/.vim/doc
これで、:h :E2v とかできます。
(2) MS-Windows
eregex_j.txt は EUC-JP です。
MS-Windows の場合は予め ShiftJIS にしておいてください。
%HOME%\vimfiles\plugin\eregex.vim
%HOME%\vimfiles\plugin\eregex_e.vim
%HOME%\vimfiles\doc\eregex_j.txt
または、
%VIM%\vimfiles\plugin\eregex.vim
%VIM%\vimfiles\plugin\eregex_e.vim
%VIM%\vimfiles\doc\eregex_j.vim
それから、次のようにして helptags の再構築をします。
:helptags $HOME\vimfiles\doc
または、
:helptags $VIM\vimfiles\doc
これで、:h :E2v とかできます。
==============================================================================
3. 関数 *eregex-functions* *eregex*
*E2v()*
E2v({extendedregex} [, {iISCDMm}])
返り値は Vim の正規表現です。
>
:let vimregex = E2v('(?<=abc),\d+,(?=xzy)','i')
:echo vimregex
\c\%(abc\)\@<=,\d\+,\%(xzy\)\@=
<
オプションの詳しい説明は |eregex-options| や |eregex-multiline|
を見てください。
E2v("","V")
返り値は eregex.vim のバージョンです。
>
:echo E2v('','V')
248
<
E2v({replacement}, {R1,R2,R3})
これは、:S/pattern/to/ の "to" の部分で使う文字列を返します。
>
E2v('\r,\n,\&,&,\~,~', 'R1') => \n,\r,\&,&,\~,~
E2v('\r,\n,\&,&,\~,~', 'R2') => \r,\n,&,\&,~,\~
E2v('\r,\n,\&,&,\~,~', 'R3') => \n,\r,&,\&,~,\~
<
==============================================================================
4. コマンド *eregex-commands*
*:E2v*
:[range]E2v [iISCDMm]
Extended regex To Vim regex.
Replace each extended-regex in [range] with vim-style-regex.
*:M*
:M/eregex[/{offset} [iISCDMm]]
Match
:M/<span class="foo">.*?<\/span>/Im
==> /\C<span class="foo">\_.\{-}<\/span>
*:S*
:[range]S/{eregex}/{string}/[&cegpriISCDMm]
Substitute
:'<,'>S/(\d{1,3})(?=(\d\d\d)+($|\D))/\1,/g
==> :'<,'>s/\(\d\{1,3}\)\%(\(\d\d\d\)\+\($\|\D\)\)\@=/\1,/g
*:G* *:G!*
:[range]G/{eregex}/{command}
:[range]G!/{eregex}/{command}
Global
:G/<<-(["'])?EOD\1/,/^\s*EOD\>/:left 8
==> :g/<<-\(["']\)\=EOD\1/,/^\s*EOD\>/:left 8
*:V*
:[range]V/{eregex}/{command}
Vglobal
==============================================================================
5. 使い方 *eregex-examples*
(1) :E2v コマンド
次の拡張正規表現の行にカーソルを置く。
(\d{1,3})(?=(\d\d\d)+($|\D))
んで、:E2v を実行すると、次のようになる。
\(\d\{1,3}\)\%(\(\d\d\d\)\+\($\|\D\)\)\@=
(2) :M コマンド
>
:M/<Items\s+attr="media">.+?<\/Items>/Im
<
:normal! /\C<Items[ \t\r\n^L]\+attr="media">\_.\{-1,}<\/Items>
<Items attr="media">
<item name="cdrom" price="90" />
<item name="cdrw" price="500" />
<item name="dvd" price="1000" />
</Items>
(3) :S コマンド
>
:'<,'>S/(\d{1,3})(?=(\d\d\d)+($|\D))/\1,/g
<
:'<,'>s/\(\d\{1,3}\)\%(\(\d\d\d\)\+\($\|\D\)\)\@=/\1,/g
1 --> 1
12 --> 12
123 --> 123
1234 --> 1,234
12345 --> 12,345
123456 --> 123,456
1234567 --> 1,234,567
12345678 --> 12,345,678
123456789 --> 123,456,789
(4) :G コマンド
>
:G/^begin$/+1;/^end$/-1:S/\l+/\U&/g
<
:g/^begin$/+1;/^end$/-1:s/\l\+/\U&/g
begin
hello world.
hello world wide web.
hello The Internet.
end
|begin
| HELLO WORLD.
| HELLO WORLD WIDE WEB.
| HELLO THE INTERNET.
|end
(5) :V コマンド
説明省略。
==============================================================================
6. キーマップ *eregex-keymappings*
/ で行なう通常の検索と :M/ を入れ替える。
.vimrc に以下を書く。 ( MS-Windows の場合 _vimrc か _gvimrc )
nnoremap / :M/
nnoremap ,/ /
"/" で、:M/ になり、",/" で従来の "/" が使えます。
--------------------
~/.vimrc の中に、
let eregex_replacement=3
を書いておくと :S コマンドの動作が次のように変わります。
:S/pattern/\r,\n,\&,&,\~,~/
:s/pattern/\n,\r,&,\&,~,\~/
+--------------------+-----------------------------+
| eregex_replacement | :S/pattern/\n,\r,&,\&,~,\~/ |
+--------------------+-----------------------------+
| 0 | :s/pattern/\n,\r,&,\&,~,\~/ |
| 1 | :s/pattern/\r,\n,&,\&,~,\~/ |
| 2 | :s/pattern/\n,\r,\&,&,\~,~/ |
| 3 | :s/pattern/\r,\n,\&,&,\~,~/ |
+--------------------+-----------------------------+
==============================================================================
7. 原則 *eregex-principle*
eregex.vim において、
「選択」「繰り返し」「丸カッコ」は、拡張正規表現流 を採用する。
それ以外は Vim の正規表現に従う。
==============================================================================
8. 内部的な変換を表す一覧 *eregex-table*
左には拡張正規表現を書き、右には Vim 流正規表現('magic')を書く。
選択
--------------------
:M/a|b /a\|b
繰り返し
--------------------
:M/a* /a*
:M/a+ /a\+
:M/a? /a\=
:M/a*? /a\{-}
:M/a+? /a\{-1,}
:M/a?? /a\{-,1}
:M/a{3,5} /a\{3,5}
:M/a{3,} /a\{3,}
:M/a{,5} /a\{,5}
:M/a{3,5}? /a\{-3,5}
:M/a{3,}? /a\{-3,}
:M/a{,5}? /a\{-,5}
丸カッコ(パレン)
--------------------
:M/(abc) /\(abc\)
:M/(?:abc) /\%(abc\)
:M/(?<=abc) /\%(abc\)\@<=
:M/(?<!abc) /\%(abc\)\@<!
:M/(?=abc) /\%(abc\)\@=
:M/(?!abc) /\%(abc\)\@!
:M/(?>abc) /\%(abc\)\@>
文字そのもの
--------------------
:M/\\,\|,\(,\),\{,\},\?,\+,\*,\[,\] /\\,|,(,),{,},?,+,\*,\[,\]
:M/\^,\$ /\^,\$
拡張正規表現で使えないもの
--------------------
\A, \b, \B, \G, \Z, \z
これらは全て Vim のものとして扱われる。
(?i:a) や (?-i) なども使えない。
Vim の正規表現で使えないもの
--------------------
\%(re\) 等、パレン(丸カッコ) を使うもの全般。
~ matches the last given substitute string
\m 'magic' on for the following chars in the pattern
\M 'magic' off for the following chars in the pattern
\v the following chars in the pattern are "very magic"
\V the following chars in the pattern are "very nomagic"
\x hex digit: [0-9A-Fa-f]
\\x[0-9A-Fa-f]{1,2} の場合、文字そのものに変換する。
\x82\xa0 => 'あ' ( shift-jis, cp932 )
ただし、0x00 と 0x0a と 0x08 は変換しません。
Vim の正規表現で使えるもの
--------------------
大抵使えます。(^^;)
\d, \D, \w, \W, \s, \S, \a, \A, \u, \U, \b, ...
\<, \>, \zs, \ze
\_[a-z], \%[abc], [[:alpha:]], \_., \_^, \_$
\%23l, \%23c, \%23v, \%#
など。
==============================================================================
9. 特殊なオプションとアトム *eregex-options*
Note: "^L" は \x0c
eregex.vim Vim
---------------------------------------
:M/a/i /\ca/
:M/\ca/ /\ca/
:M/a/I /\Ca/
:M/\Ca/ /\Ca/
:M/\s/S /[ \t\r\n^L]
:M/\S/S /[^ \t\r^L]
:M/[^az]/C /\_[^az]/
:M/\W/C /\_W/
:M/./D /\_./
:M/\s[^az]./M /[ \t\r\n^L]\_[^az]./
:M/\s[^az].\M/ 同上。
:M/\s[^az]./m /[ \t\r\n^L]\_[^az]\_./
:M/\s[^az].\m/ 同上。
+--------+------+--------------------------------------------------------+
| OPTION | ATOM | 説明 |
+--------+------+--------------------------------------------------------+
| /i | \c | 大小文字の区別無し。 |
| /I | \C | 大小文字の区別あり。 |
+--------+------+--------------------------------------------------------+
| /S | | \s および \S を [ \t\r\n^L] や [^ \t\r^L] に変換する。 |
| /C | | 補集合が改行にもマッチする。 |
| /D | | ドットが改行にもマッチする。 |
+--------+------+--------------------------------------------------------+
| /M | \M | /S と /C を行なう。 部分マルチライン。 |
| /m | \m | /S と /C と /D を行なう。完全マルチライン。 |
+--------+------+--------------------------------------------------------+
Note:
(A) オプション /iImM
(B) \c, \C, \m, \M
(C) (?i), (?I), (?m), (?M)
これらが同時に指定された場合、上の方が優先順位が高い。
ちなみに、(?M) と (?m) は、ブラケットの中の \s には適用されません。
==============================================================================
10. マルチライン *eregex-multiline*
とりあえず以下の表を見て。(^^;)
+-----+----------------------------------------------+--------------------+
| Num | eregex.vim => vim regex | ruby regex |
+-----+----------------------------------------------+--------------------+
| (1) | :M/a\s[^az].z/ => /a\s[^az].z/ | /a[ \t][^az\n].z/ |
+-----+----------------------------------------------+--------------------+
| | :M/a\s[^az].z/S => /a[ \t\r\n^L][^az].z/ | /a\s[^az\n].z/ |
| | :M/a\s[^az].z/C => /a\s\_[^az].z/ | /a[ \t][^az].z/ |
| | :M/a\s[^az].z/D => /a\s[^az]\_.z/ | /a[ \t][^az\n].z/m |
+-----+----------------------------------------------+--------------------+
| (2) | :M/a\s[^az].z/M => /a[ \t\r\n^L]\_[^az].z/ | /a\s[^az].z/ |
| (3) | :M/a\s[^az].z/m => /a[ \t\r\n^L]\_[^az]\_.z/ | /a\s[^az].z/m |
+-----+----------------------------------------------+--------------------+
(1) は、「文字クラス」が Vim 流。
(2) は、「文字クラス」が Ruby 流。
Vim 流に言えば、改行にマッチする所が増えたので、部分マルチライン。
Ruby 流に言えば、マルチラインでない。よってオプションは大文字の M 。
(3) は、いわゆる Ruby 流のマルチライン。
Note:
Vim の正規表現では、/[^az]/ は改行にマッチしません。
改行にマッチしないことを明示して /[^az\n]/ と書く必要はありません。
/[^az\n]/ は意図に反して改行にもマッチします。
よって、本来 /[^ \t\r\n^L]/ とするべきところを、/[^ \t\r^L]/ に
変換している場合があります。
原則的に Vim では、[^...] の中に \n を書いてはいけません。
==============================================================================
11. デリミタの制限 *eregex-limitation-of-delimiter*
:M で使える区切り文字は / と ? だけです。
:S 、:G および :V で使える区切り文字は /, #, @ です。
これらの使用方法は :s 、:g 、:v と同じです。
制限も同様です。
区切り文字を @ にするといろいろ制限があります。
一見うまくいきそうに見えてダメな例。
"foo@bar.baz.co.jp" を "foo@hoge.co.jp" に置換しようとして、
>
:%s@\<foo\@bar\.baz\.co\.jp\>@foo\@hoge.co.jp@Ig
<
は、エラーです。
Vim の正規表現で、\@ は特別な扱いを受けています。
==============================================================================
12. Vim の正規表現について *eregex-about-vimregex*
以下 カーソルを "111,222,333" の行に置いて、:S... を実行してください。
(1)通常のサブマッチ。
111,222,333
>
:S/(\d+),(\d+),(\d+)/\=submatch(1) + submatch(2) + submatch(3)
<
666
(2)Vim 独自機能。
マッチデータ($&, &, matchdata) と、サブマッチを分離できます。
\zs と \ze を使う。 See :h /\zs
111,222,333
>
:S/(\d+),\zs\d+\ze,(\d+)/\=submatch(1) + submatch(0) + submatch(2)
<
111,666,333
(3)
以下の方が分かりやすいかも。
111,222,333
>
:S/(\d+),\zs(\d+)\ze,(\d+)/\=submatch(1) + submatch(2) + submatch(3)
<
111,666,333
\zs と \ze を使うと、マッチデータに含まれないサブマッチを操作できます。
(4) \_x の機能。
\u で [A-Z] を表す。
\_u で [A-Z\n] を表す。
\_[A-Z] は [A-Z\n] と同じ。
大文字以外で改行を含む文字。
\_U == \_[^A-Z]
\_. は改行を含む任意の文字。
(5) ^ と \_^ および $ と \_$ の違い。
$ を例にとります。
通常 $ は
(1)正規表現の一番最後。
(2) ) の直前。
(3) | の直前。
にある場合だけ行末を表す。
ところが任意の場所で行末を表せるのが \_$ 。
111,222,333
>
:S/(\d+),(\d+),(\d+)\zs\_$\ze/\=',' . (submatch(1) + submatch(2) + submatch(3))
<
111,222,333,666
ここで使っている \_$ の代わりに $ を使っても意図した結果になりません。
Note:
\_^ と \_$ は perl の /m オプションとは全然違います。
==============================================================================
13. 履歴
revision 2.55
(1) E2v() にバージョン番号や、sub-replace-special の置換を加えた。
(2) \v を 0x0b に置換するようにした。
(3) :M/pattern/ でマッチしなくても、@/ を更新した。
revision 2.35
(1) オプション S,C,D,M,m の追加と変更。
revision 1.4x
(1) :S/\x2f/\\/g とかすると、:s///\\/g に変換してしまうバグ修正。
(2) エスケープされたデリミタを検索履歴ではアンエスケープした。
デリミタが '@' の場合を除く。
(3) オプション m の修正。
revision 1.13
:G で ! を使えるようにした。
revision 1.1.1.21
:S の /c オプションで確認のプロンプトが見えなくなってしまう問題修正。
-- vim:ft=help:
.vim/doc/eregex.txt
deleted
100644 → 0
View file @
f22a24b0
*eregex.txt*
File: eregex.vim, eregex_e.vim
Author: AKUTSU toshiyuki <locrian@mbd.ocn.ne.jp>
Maintainer: othree <othree@gmail.com>
Version: 2.56
Required: Vim version 6.1
Note: eregex.vim is used to convert regexp notation style.
eregex_e.vim is used to map command for eregex.vim.
1. License |eregex-license-to-use|
2. Installation |eregex-installations|
3. Functions |eregex-functions|
4. Command |eregex-commands|
5. Usage |eregex-examples|
6. Keymap |eregex-keymappings|
7. Principle |eregex-principle|
8. Convert Table |eregex-table|
9. Options |eregex-options|
10. Multiline |eregex-multiline|
11. Limitation of Delimiter |eregex-limitation-of-delimiter|
12. About Vim Regexp |eregex-about-vimregex|
==============================================================================
1. License *eregex-license-to-use*
Copyright of eregex.vim and eregex_e.vim belongs to AKUTSU toshiyuki.
It is free to change and redistribute this script. You can think as an
GPL License software.
Author will not take any responsibility for damages due to using this
script (eregex.vim, eregex_e.vim).
==============================================================================
2. Installation *eregex-installations*
Open eregex.vba using Vim. And execute the following command.
>
:so %
<
==============================================================================
3. Functions *eregex-functions* *eregex*
*E2v()*
E2v({extendedregex} [, {iISCDMm}])
Vim regexp notation will return.
>
:let vimregex = E2v('(?<=abc),\d+,(?=xzy)','i')
:echo vimregex
<
Detail of option value can be found at |eregex-options|
or |eregex-multiline|
E2v("","V")
Return eregex.vim version number
>
:echo E2v('','V')
248
<
E2v({replacement}, {R1,R2,R3})
Return the "to" part of :S/pattern/to/ .
>
E2v('\r,\n,\&,&,\~,~', 'R1') => \n,\r,\&,&,\~,~
E2v('\r,\n,\&,&,\~,~', 'R2') => \r,\n,&,\&,~,\~
E2v('\r,\n,\&,&,\~,~', 'R3') => \n,\r,&,\&,~,\~
<
==============================================================================
4. Command *eregex-commands*
*:E2v*
:[range]E2v [iISCDMm]
Extended regex To Vim regex.
Replace each extended-regex in [range] with vim-style-regex.
*:M*
:M/eregex[/{offset} [iISCDMm]]
Match
:M/<span class="foo">.*?<\/span>/Im
==> /\C<span class="foo">\_.\{-}<\/span>
*:S*
:[range]S/{eregex}/{string}/[&cegpriISCDMm]
Substitute
:'<,'>S/(\d{1,3})(?=(\d\d\d)+($|\D))/\1,/g
==> :'<,'>s/\(\d\{1,3}\)\%(\(\d\d\d\)\+\($\|\D\)\)\@=/\1,/g
*:G* *:G!*
:[range]G/{eregex}/{command}
:[range]G!/{eregex}/{command}
Global
:G/<<-(["'])?EOD\1/,/^\s*EOD\>/:left 8
==> :g/<<-\(["']\)\=EOD\1/,/^\s*EOD\>/:left 8
*:V*
:[range]V/{eregex}/{command}
Vglobal
==============================================================================
5. Usage *eregex-examples*
(1) :E2v command
Change the regexp notation style of the cursor line.
(\d{1,3})(?=(\d\d\d)+($|\D))
Move cursor to this line and execute :E2v command will change this line to
the following result.
\(\d\{1,3}\)\%(\(\d\d\d\)\+\($\|\D\)\)\@=
(2) :M command
>
:M/<Items\s+attr="media">.+?<\/Items>/Im
<
:normal! /\C<Items[ \t\r\n^L]\+attr="media">\_.\{-1,}<\/Items>
<Items attr="media">
<item name="cdrom" price="90" />
<item name="cdrw" price="500" />
<item name="dvd" price="1000" />
</Items>
(3) :S command
>
:'<,'>S/(\d{1,3})(?=(\d\d\d)+($|\D))/\1,/g
<
:'<,'>s/\(\d\{1,3}\)\%(\(\d\d\d\)\+\($\|\D\)\)\@=/\1,/g
1 --> 1
12 --> 12
123 --> 123
1234 --> 1,234
12345 --> 12,345
123456 --> 123,456
1234567 --> 1,234,567
12345678 --> 12,345,678
123456789 --> 123,456,789
(4) :G command
>
:G/^begin$/+1;/^end$/-1:S/\l+/\U&/g
<
:g/^begin$/+1;/^end$/-1:s/\l\+/\U&/g
begin
hello world.
hello world wide web.
hello The Internet.
end
|begin
| HELLO WORLD.
| HELLO WORLD WIDE WEB.
| HELLO THE INTERNET.
|end
(5) :V command
Skipped.
==============================================================================
6. keymap *eregex-keymappings*
You can add the following keymap to use / instead of type :/M
nnoremap / :M/
nnoremap ? :M?
nnoremap ,/ /
nnoremap ,? /
"/" will use :M/ to search. ",/" will use the original "/".
--------------------
Add the following line to ~/.vimrc
let eregex_replacement=3
will make :S have the following rules.
:S/pattern/\r,\n,\&,&,\~,~/
:s/pattern/\n,\r,&,\&,~,\~/
+--------------------+-----------------------------+
| eregex_replacement | :S/pattern/\n,\r,&,\&,~,\~/ |
+--------------------+-----------------------------+
| 0 | :s/pattern/\n,\r,&,\&,~,\~/ |
| 1 | :s/pattern/\r,\n,&,\&,~,\~/ |
| 2 | :s/pattern/\n,\r,\&,&,\~,~/ |
| 3 | :s/pattern/\r,\n,\&,&,\~,~/ |
+--------------------+-----------------------------+
==============================================================================
7. Principle *eregex-principle*
eregex.vim adopts the way of extended regex about "alternation",
"repetition" and "grouping".
==============================================================================
8. Convert Table *eregex-table*
Perl style on left side. Vim style ('magic') on right side.
Alternation
--------------------
:M/a|b /a\|b
Repetition
--------------------
:M/a* /a*
:M/a+ /a\+
:M/a? /a\=
:M/a*? /a\{-}
:M/a+? /a\{-1,}
:M/a?? /a\{-,1}
:M/a{3,5} /a\{3,5}
:M/a{3,} /a\{3,}
:M/a{,5} /a\{,5}
:M/a{3,5}? /a\{-3,5}
:M/a{3,}? /a\{-3,}
:M/a{,5}? /a\{-,5}
Grouping
--------------------
:M/(abc) /\(abc\)
:M/(?:abc) /\%(abc\)
:M/(?<=abc) /\%(abc\)\@<=
:M/(?<!abc) /\%(abc\)\@<!
:M/(?=abc) /\%(abc\)\@=
:M/(?!abc) /\%(abc\)\@!
:M/(?>abc) /\%(abc\)\@>
Special Characters
--------------------
:M/\\,\|,\(,\),\{,\},\?,\+,\*,\[,\] /\\,|,(,),{,},?,+,\*,\[,\]
:M/\^,\$ /\^,\$
Not support
--------------------
\A, \b, \B, \G, \Z, \z
Vim doesn't support these features.
(?i:a) and (?-i) neither.
Unusable Vim regexp notation
--------------------
\%(re\) and square rackets
~ matches the last given substitute string
\m 'magic' on for the following chars in the pattern
\M 'magic' off for the following chars in the pattern
\v the following chars in the pattern are "very magic"
\V the following chars in the pattern are "very nomagic"
\x hex digit: [0-9A-Fa-f]
\\x[0-9A-Fa-f]{1,2} will change to character.
\x82\xa0 => '' ( shift-jis, cp932 )
But 0x00 and 0x0a and 0x08 will not change.
Usable Vim regexp notations
--------------------
\d, \D, \w, \W, \s, \S, \a, \A, \u, \U, \b, ...
\<, \>, \zs, \ze
\_[a-z], \%[abc], [[:alpha:]], \_., \_^, \_$
\%23l, \%23c, \%23v, \%#
==============================================================================
9. Special Option and Atom *eregex-options*
Note: "^L" is \x0c
eregex.vim Vim
---------------------------------------
:M/a/i /\ca/
:M/\ca/ /\ca/
:M/a/I /\Ca/
:M/\Ca/ /\Ca/
:M/\s/S /[ \t\r\n^L]
:M/\S/S /[^ \t\r^L]
:M/[^az]/C /\_[^az]/
:M/\W/C /\_W/
:M/./D /\_./
:M/\s[^az]./M /[ \t\r\n^L]\_[^az]./
:M/\s[^az].\M/ Same as above.
:M/\s[^az]./m /[ \t\r\n^L]\_[^az]\_./
:M/\s[^az].\m/ Same as above.
+--------+------+--------------------------------------------------------+
| OPTION | ATOM | NOTE |
+--------+------+--------------------------------------------------------+
| /i | \c | Case insensitive |
| /I | \C | Case sensitive |
+--------+------+--------------------------------------------------------+
| /S | | \s and \S becomes [ \t\r\n^L] and [^ \t\r^L] |
| /C | | [] brackets will also match line break. |
| /D | | Dot will match line break |
+--------+------+--------------------------------------------------------+
| /M | \M | Use /S and /C . Partial multiline support |
| /m | \m | Use /S, /C and /D . All support multiline |
+--------+------+--------------------------------------------------------+
Note:
(A) Option /iImM
(B) \c, \C, \m, \M
(C) (?i), (?I), (?m), (?M)
If you use these at the same time. The priority will follow the order.
If you use (?M) and (?m), \s in bracket will not work.
==============================================================================
10. Multiline *eregex-multiline*
+-----+----------------------------------------------+--------------------+
| Num | eregex.vim => vim regex | ruby regex |
+-----+----------------------------------------------+--------------------+
| (1) | :M/a\s[^az].z/ => /a\s[^az].z/ | /a[ \t][^az\n].z/ |
+-----+----------------------------------------------+--------------------+
| | :M/a\s[^az].z/S => /a[ \t\r\n^L][^az].z/ | /a\s[^az\n].z/ |