タグ

ブックマーク / thinca.hatenablog.com (13)

  • Vim の問題を調査したときの記録 - 永遠に未完成

    先日私の環境で起きた Vim に関する問題を調査した際の記録。一例なので汎用的に使える手法ではないけど、こういう感じのことをしているよというのを書き留めておきます。 結果的に無駄だった工程も書いています。1 道で調査が進むことの方が珍しく、だいたい回り道します。 問題 「cgn で検索のマッチ対象を別のキーワードに置き換えたあと . で繰り返すと、Bell が発生する。」 cgn は c + gn で、gn は検索にマッチした範囲です。つまり検索にマッチした内容を c で書き換え、. で次のマッチ対象にも同様の変更を行います。1 つずつ確認しながら置換したい場合などによく使われる操作です。 問題について Vim では不正な操作をした場合など様々な場面で警告としてベルを鳴らします。 例えばノーマルモードでそれ以上移動できない方向に移動しようとした場合など、割と些細なことでも鳴ったりします。

    Vim の問題を調査したときの記録 - 永遠に未完成
    peketamin
    peketamin 2018/01/29
  • VimConf 2017 を振り返る - 永遠に未完成

    VimConf 2017 に、スタッフとして参加したので、その簡単に振り返りなどを。この内容はあくまで個人的なものであり、運営チームとしての見解ではありません。 今年の VimConf の立ち上げ 例年の VimConf に参加してくれていた人ならわかると思いますが、今年の VimConf は規模が去年までとは違い、かなり大きくなりました。 そもそも今年の VimConf の企画立ち上げ当初、我々には課題がありました。VimConf では将来的に Bram さんを招待したいと謳っているのですが、昨年までのペースではとてもではないけどそれは実現できないだろう、ということです。これを達成するためには、VimConf は大きく変わる必要がありました。 規模を大きくするには多くの壁があります。多くの人が入る会場を確保し、資金を調達する必要があります。会場を大きくしたとして、人が集まるかどうかはわか

    VimConf 2017 を振り返る - 永遠に未完成
    peketamin
    peketamin 2017/11/09
  • Vim script で AtCoder に参戦する方法 - 永遠に未完成

    先週、進捗キャンプという知り合いで集まって進捗を出す会に行ってきて、そこで @haya14busa さんと表題の件について色々話した。 その後個人的に手法をカイゼンしたりしたので、結果をまとめておく。 AtCoder とは http://atcoder.jp/ 私自身も「とは」と言って語れるほど詳しくはないので簡単に説明すると、主に日人向けの競技プログラミングサイト。 問題は全て日語で、定期的に様々なコンテストが開催されている。問題の難易度が低い初心者向けのコンテスト(AtCoder Beginner Contest 通称 ABC)なんかもあるので、競技プログラミングの入口としては最適だ。 AtCoder の対応言語 競技プログラミングでは、ソースコードを提出し、提出されたコードが正しく動くかどうかサーバ側で実際に動かして検証を行う。つまり、サーバ側に各言語の処理系が必要であり、競技プ

    Vim script で AtCoder に参戦する方法 - 永遠に未完成
    peketamin
    peketamin 2015/10/03
  • 無料で使える CI サービス 8 個まとめ - 永遠に未完成

    CI サービスをいくつか触ってみたのでまとめ。 今回の目的は、テストを実行すること。なので、ビルドやデプロイ辺りはちゃんとは見ていない。 ドキュメントで確認しただけの項目などもあったりするので、間違っていたらごめんなさい。教えてもらえると助かります。 ただ、これは記事を書いた時点での比較で、今後のサービスの変更に対応する予定はないです。 触ってみたサービス一覧 アルファベット順。 AppVeyor CircleCI Drone IO Magnum CI semaphore shippable Travis CI wercker codeship ってのもあったけど、無料プランは月100ビルドまでとかで常用には耐えないと感じたので中身見てない。 機能比較 機能比較は全て無料プランでのもの。有料だと対応している場合でもここでは x にしている。 比較項目は私の独断と偏見で適当に選出した。 項目

    無料で使える CI サービス 8 個まとめ - 永遠に未完成
  • 本当にキモい Vim script - 行継続編 - 永遠に未完成

    Vim Advent Calendar 2013 の 49 日目の記事です。 Vim script は行指向、もっと言うとコマンド指向の言語です。そう言った点で、シェルスクリプトに近いです。 Vim script if hoge ==# "HUGA" " if コマンド " ↓echo コマンド echo 'hi' endif " endif コマンド シェルスクリプト if [ "$HOGE" = "HUGA" ] # if コマンド then # then コマンド echo hi # echo コマンド fi # fi コマンド シェルクリプトの if なんかは if コマンドとは呼ばないかもしれないですが、そういう風にも見れるということで。 さて、行指向と言っても、1行が長くなったら途中で折り返したいものです。 シェルスクリプトでは行末に \ があると、次の行は現在の行の継続行とみ

    本当にキモい Vim script - 行継続編 - 永遠に未完成
    peketamin
    peketamin 2014/01/19
  • 本当にキモい Vim script - 正規表現編 - 永遠に未完成

    Vim Advent Calendar 2012 の 339 日目の記事です。 先日、Lingr で :s コマンドの引数をパースする方法についての話になりました。 :s はご存知の通り、置換コマンドです。 :[range]s[ubstitute]/{pattern}/{string}/[flags] [count]今回 [range] と [count] は無視するとして、それ以外の {pattern} と {string} と [flags]、あとはパターン内でエスケープされているかもしれない区切り文字(多くの場合は /) が何になるか知りたい。 結果的にできたのは以下のような正規表現です。 \v^s%[ubstitute]([\x00-\xff]&[^\\"|[:alnum:][:blank:]])(%(\\.|.){-})%(\1(%(\\.|.){-})%(\1([&cegiIn

    本当にキモい Vim script - 正規表現編 - 永遠に未完成
  • 意外と知られていない diff に関する機能 - 永遠に未完成

    Vim Advent Calendar 2012 の 147 日目の記事です。 137 日目の tyru さんの記事で、Vim の diff 機能について紹介がありました。この記事ではもう少し細かい diff の機能について紹介したいと思います。 :diffthis 比較したい対象がファイルではない場合、例えば、外部からデータを無名バッファにコピーしてきた場合に、それらのバッファの diff を表示したいことがあります。この場合は、:diffsplit は使えません。 こういう場合は :diffthis を使います。diff を適用したいバッファでそれぞれ :diffthis をすると、実行したバッファ同士の差分を見ることができます。 これを利用した設定に、help で紹介されている :DiffOrig があります。(:help :DiffOrig) これは現在編集中のファイルと、最後に保

    意外と知られていない diff に関する機能 - 永遠に未完成
  • git reset --hard HEAD を安全にした - 永遠に未完成

    昨日、git reset --hard HEAD してしまって大変なことになった話を書いた。私は普段これを cancel と言う名前に alias して使っている。 [alias] # 中略 cancel = reset --hard HEAD しかし前回のようなことがまたあってはたまらない。人間はミスするものだ。 alias があって実行しやすいのが問題なのだろうか? いや、割とよくする操作*1だし、alias しなくても使うだろう。 てことで、cancel が安全になるようにしてみた。 [alias] # 中略 cancel = !git commit -a -m 'Temporary commit for cancel' && git reset --hard HEAD~ 一旦コミットしてからそのコミットを消す。こうしておけば最悪 git reflog から元に戻せる。特にコミットす

    git reset --hard HEAD を安全にした - 永遠に未完成
    peketamin
    peketamin 2013/04/12
  • TokyoVim#13 に行ってきた - 永遠に未完成

    TokyoVim#13 に行ってきた。 今回の参加者は10名と結構多め。いいですね。 今回、と言うか最近は毎回なのだけど、自宅にあるサーバに接続してそこで作業している。ここが開発の母艦になっているので、ここで直接作業すると後で作業結果を反映する必要がないのでラクチン。 で、到着して早速繋ごうとしたわけです。 「接続がタイムアウトしました」 …!? 家を出る直前まで Vim をいじっていたのでサーバが落ちてる可能性は極めて低い。原因はすぐに思い当たった。 …DNS が、更新されてない…orz 丁度前日に自宅のブレーカーが落ちる事件があって、その時に自宅の IP アドレスが更新されていた模様。しかも DNS 自動更新スクリプトを cron に仕込んでいたのだけど、バグっててちゃんと動いてなかった…。 諦めてその場でできる作業をしようかとも思ったけど、やっぱりやり途中の作業をやりたかったので、会

    peketamin
    peketamin 2013/03/19
  • Live Coding で painter.vim(仮) 作った - 永遠に未完成

    Vim Advent Calendar 2012 の 81 日目の記事です。 先日 Yokohama.vim #4 で Live Coding をしたわけですが、今回はその成果について紹介したいと思います。 以下がその時作った painter.vim(仮) です。Vim を使ってマウスでお絵描きできるプラグインです。 https://github.com/thinca/vim-painter 以下のような感じ。 Live Coding の時間で作ったのもあって、プロトタイプ的な実装な感じです。とりあえず動くよレベル。 この手のプラグイン自体には結構興味あるので、ちゃんと作りたいと思いつつも、真面目に作ろうと思ったらかなり膨大なタスクになるのが目に見えている上に完全にネタで実用性皆無なので、どうしようか考え中…。この記事の反響次第かな。 あと名前もてきとーに決めたので、もしかしたらリポジトリ

    Live Coding で painter.vim(仮) 作った - 永遠に未完成
    peketamin
    peketamin 2013/02/19
  • submode.vim とその設定例なんかを紹介 - 永遠に未完成

    Vim Advent Calendar 2012 の 62 日目の記事です。 私が毎日のようにお世話になっているプラグインの1つに、kana さん作の submode.vim と言うのがあります。結構昔からあり、かなり便利なのにあまり知られていないような気がします。これはもったいない!と言うことで今回はこの submode.vim について書こうと思います。 submode.vim とは https://github.com/kana/vim-submode submode.vim は、ユーザが自由にサブモードを定義できるプラグインです。…と言っても何のことやらさっぱりですね。 Vim には、複数のキー、つまりキーシーケンスによって成立するコマンドがたくさんあります。例えば <C-w>+ は現在のウィンドウの高さを変更します。そして、この複数のキー入力が必要な割に、連続で入力したいコマンド

    submode.vim とその設定例なんかを紹介 - 永遠に未完成
    peketamin
    peketamin 2013/02/01
  • ref.vim 書いた - 永遠に未完成

    ref.vim なるVimで様々な言語のリファレンスを見るためのプラグインを作った。 Vim で各種言語のリファレンスを見るプラグインはすでに色々あるけど、それぞれ独立しているので操作性とかその他もろもろ統一されてなくて嫌になったので作った。 公開したのはいいけど全然作りかけです。とりあえず最低限動く感じ。 2009/08/11 追記: 肝心の公開リポジトリのURL貼るの忘れてましたorz ごめんなさい。 http://github.com/thinca/vim-ref/tree/master 現状の対応リファレンス refe (Ruby) phpmanual (PHP) あらかじめマニュアルをDLして解凍してそのパスを g:ref_phpmanual_path に設定する必要がある。 簡単な使い方 :Ref コマンド 唯一のコマンド :Ref が定義されているので、これを使います。 :R

    ref.vim 書いた - 永遠に未完成
    peketamin
    peketamin 2013/01/08
  • Sublime Text 2 のあの機能を使う - 永遠に未完成

    Vim Advent Calendar 2012 の 3 日目の記事です。 前回の kaoriya さんの記事でも触れられていましたが、Sublime Text 2、最近とても注目されていますね。私の周りにも使っている人をちらほらみかけます。 これだけ人気があるのだから、何か秘密があるはず。人気のある機能があるのではないか。その機能を Vim に移植できれば、Vim がもっと便利になるのではないだろうか。そう考えた私は、ちょっと調べてみることにしました。 色々便利な機能があるようですが、前回の minimap 然り、いくつかの機能はすでに移植が試みられているようです。そんな中今回は Sublime Text 2 の以下の機能に注目してみました。 このダイアログです。これは Sublime Text 2 を使っていると保存時に時折表示されるもののようで、この機能は無効にもできるようですが、有

    Sublime Text 2 のあの機能を使う - 永遠に未完成
    peketamin
    peketamin 2013/01/06
    これは便利
  • 1