タグ

正規表現とvimに関するigrepのブックマーク (3)

  • Vimmerに捧げる正規表現の基礎中の基礎 — KaoriYa

    正規表現はVimに限らずコンピューター上でのテキスト操作において非常に強力です。 しかし学習の難しさも非情で多くのIT技術者、Vimmerが正規表現に苦しんでいるのを幾度となく目の当たりにしています。 ただ正規表現は当にそんなに難しいのでしょうか。 いいえそんなことはありません。 正規表現は来とても簡単な原理で学習も容易なのです。 にも関わらず難しいと思われてしまうのは、原理を理解しないまま外見上の機能をそのまま覚えようとするからです。 記事では正規表現の原理にフォーカスし解説することで、Vimを含む様々な正規表現実装の利用難度を適切にしようという記事です。 記事は Vim Advent Calendar 2019 の1日目の記事です。 「正規表現」はもともと形式言語という言語学の一分野の研究から生まれました。 言語学というのは言葉を科学的に研究する学問です。 形式言語はその中でも

    igrep
    igrep 2019/12/01
    "遷移のたびにスタックを操作することでプッシュダウン・オートマトンになったり、 終了状態をなくして遷移のたびにテキストデータを出力するようにすることでコンバータやコンパイラといった感じの振る舞いをする"
  • Vimに自分の書いたパッチが取り込まれた! - プログラムモグモグ

    Vim 8.0.0623に私の書いたパッチが取り込まれました。 わーい ∩(>◡<*)∩ わーい! もともとのきっかけは、自分のプラグインを開発している中で、[\u3000-\u4000]という正規表現に対する挙動がset re=1とset re=2で違うことに気がついたのです。 Vimは正規表現エンジンを2つ積んでいる恐ろしいエディターなのですが、この2つの正規表現エンジンの挙動に微妙な違いがあることに気がつきました。 新しいNFAエンジンではエラーは出ませんが、古いエンジンではエラーが出ます。 古い正規表現エンジンでは、[a-z] みたいなパターンで、[\u3000-\u4000]のように差が大きすぎるとエラーを吐くのです。 この挙動の違いはまぁいいんです、エンジンの仕組みがぜんぜん違うので… ただ、この時のエラー番号E16でヘルプを引くと、コマンドのrangeに関するエラーなんです。

    Vimに自分の書いたパッチが取り込まれた! - プログラムモグモグ
    igrep
    igrep 2017/06/08
    おめでとうございます!あとは子どもにvimを教えるだけですね!
  • Vim のマッピングで Fizzbuzz 問題を解く - Humanity

    この記事は Vim Advent Calendar 2016 19日目の記事です。 締め切りがない世界に行きたいと言いつつ、締め切りがなければ何もしないニート根性の tyru です。メリークリスマス!!(錯乱) (レジスタ編) Fizzbuzz 問題のコード 以前私はこんなコードを Gist に投稿したことがあります。 パッと見て何をするコードかわかるでしょうか。 " " doit -> -> getchar:{num} -> fizzbuzz:{type} " nmap <expr> doit join(map(range(1, 100), '"<SID>getchar:entry:".v:val."\<Esc>"'),'') nmap <expr> <SID>getchar:entry [setreg('n', '', 'c'), "<SID>getchar"][1] nmap <ex

    Vim のマッピングで Fizzbuzz 問題を解く - Humanity
  • 1