Vim ã§å¤ãæ£è¦è¡¨ç¾ã¨ã³ã¸ã³ã¨æ°ããæ£è¦è¡¨ç¾ã¨ã³ã¸ã³ãåãæ¿ãã
ãã®è¨äºã¯ Vim Advent Calendar 2012 313æ¥ç®ã®è¨äºã«ãªãã¾ãã
ãã¦ãå
æ¥ãªãªã¼ã¹ããã Vim 7.4 ã§ã¯æ°ããæ£è¦è¡¨ç¾ã¨ã³ã¸ã³ã¨ã㦠NFA ã®å®è£
ã追å ããã¾ããã
ãã®ã¨ã³ã¸ã³ã¯ããã¤ãã®ãã¿ã¼ã³ã§åä½ãéãã®ã§ãããã¾ã ãã¹ã¦ã®æ©è½ã¯ãµãã¼ãããã¦ãã¾ããã
ãã®çºãã¾ã å¤ãæ£è¦è¡¨ç¾ã¨ã³ã¸ã³ãçµã¿è¾¼ã¾ãã¦ãããã¦ã¼ã¶å´ã§ä½¿ç¨ããã¨ã³ã¸ã³ãåãæ¿ãã¦ä½¿ç¨ããäºãã§ãã¾ãã
ãã®æ£è¦è¡¨ç¾ã¨ã³ã¸ã³å¨ãã®åé¡ã¨ãã¦ä»¥ä¸ã®ãããªãã®ãä¸ãããã¾ãã
- <SNR> のマッチの仕方が 'regexpengine' の値によって違う · Issue #477 · vim-jp/issues
- 新正規表現エンジンで後方参照を使っていると正しくマッチしない場合がある · Issue #479 · vim-jp/issues
- Vim 7.4 で precious.vim を使用している場合にカーソル移動が遅くなる場合の対処方法
ä¸è¨ã®ãããªåé¡ã¯æ£è¦è¡¨ç¾ã¨ã³ã¸ã³ã«ãã£ã¦æåãéã£ããããçºãå ´åã«ãã£ã¦ä½¿ç¨ããæ£è¦è¡¨ç¾ã¨ã³ã¸ã³ãåãæ¿ããå¿
è¦ãããã¾ãã
[ãªãã·ã§ã³ã使ç¨ãã¦åãæ¿ãã]
使ç¨ããæ£è¦è¡¨ç¾ã¨ã³ã¸ã³ãè¨å®ããããã« 'regexpengine' ã¨ãããªãã·ã§ã³ãæ°ãã追å ããã¾ããã
ããã¯ä»¥ä¸ã®æ§ãªå¤ãè¨å®ããäºãã§ãã¾ãã
- 0ï¼èªåé¸æï¼ããã©ã«ãå¤ï¼
- 1ï¼å¤ãã¨ã³ã¸ã³
- 2ï¼NFA ã¨ã³ã¸ã³
ããã©ã«ãã§ã¯èªåçã«é©åãªã¨ã³ã¸ã³ãé¸æããããããªè¨å®ãããã¾ãã
æ示çã«ã¨ã³ã¸ã³ãåãæ¿ãããå ´å㯠'1' ã '2' ãè¨å®ãã¦ä½¿ç¨ãã¾ãã
[æ£è¦è¡¨ç¾ãã¿ã¼ã³ã®å é ã§ã¨ã³ã¸ã³ãæå®ãã]
'regexpengine' 以å¤ã«ãæ£è¦è¡¨ç¾ãã¿ã¼ã³ã®å é ã§æ£è¦è¡¨ç¾ã¨ã³ã¸ã³ãæå®ããäºãã§ãã¾ãã
- \%#=0ï¼å¼·å¶çã«èªåé¸æã«ããã'regexpengine' ã 0 以å¤ã®ã¨ãã ãæå³ãããã
- \%#=1ï¼å¼·å¶çã«å¤ãã¨ã³ã¸ã³ã使ãã
- \%#=2ï¼å¼·å¶çã« NFA ã¨ã³ã¸ã³ã使ãã
" 使ç¨ããæ£è¦è¡¨ç¾ã¨ã³ã¸ã³ã«ãã£ã¦çµæãç°ãªã echo "\<SNR>" =~# "\<SNR>" " æ示çã« NFAã¨ã³ã¸ã³ã使ç¨ããããã«æå® echo "\<SNR>" =~# "\\%#=2\<SNR>" " => 1 " NFA ã¨ã³ã¸ã³ã®å ´åã§ã®ã¿æå³ããåä½ãããã®ã§ " æ示çã« NFA ã¨ã³ã¸ã³ã使ç¨ããããã«ãã execute "function /\\%#=2\<SNR>80_"
æ£è¦è¡¨ç¾ãã¿ã¼ã³ãã¨ã«æ£è¦è¡¨ç¾ã¨ã³ã¸ã³ãæå®ããäºãã§ããã®ã§ããã©ã°ã¤ã³å´ã§æ£è¦è¡¨ç¾ã使ç¨ããå ´åãªã©ã«æ示çã«æå®ããäºãã§ãã¾ãã