タグ

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

  • Vim 駅伝、始動します - 永遠に未完成

    これは Vim 駅伝 の 1 目の記事です。 Vim 駅伝は、駅伝でタスキを繋ぐように Vim に関する記事を参加者で順番に書いていくイベントです。 発端 2023 年 2 月 6 日、vim-jp 内で Advent Calendar が話題に上がりました。 Advent Calendar は 12 月の 1 日から 25 日まで毎日参加者がトピックに関する記事を書いていくイベントです。 この時期になると大量の Advent Calendar が立てられ、それぞれのトピックで毎日記事が公開されます。 12 月に集中して大量の記事が公開され、お祭りのようなイベントとして毎年盛り上がります。 同じテーマの Advent Calendar がいくつも併走していることに対して、私が以下のような発言をしました。 見ての通り、「わかる」のリアクションがたくさん付きました。同じように感じている人は結

    Vim 駅伝、始動します - 永遠に未完成
    mollifier
    mollifier 2023/03/01
  • 全角スペースを可視化するプラグイン zenspace.vim を作った - 永遠に未完成

    プログラミングをしていると、混ざっていると困る全角スペース。 可視化するように設定を書いている人も多いんじゃないでしょうか。 実際ググると、全角スペースを表示するための設定がたくさん出てきます。私も vimrc に設定書いてました。 でもこれ…みんなやってるなら、もうプラグインでよくない? ってことでプラグインにしました。 zenspace.vim - Show Ideographic Space (a.k.a. Zenkaku Space). https://github.com/thinca/vim-zenspace 全角スペースを表示するためだけのプラグインです。(画像内のタブの表示は 'listchars' によるもの) デフォルトでは 'list' オプションの値に連動して、可視/不可視を切り替えます。なので、'list' オプションをオンにしてください。 set list 'l

    全角スペースを可視化するプラグイン zenspace.vim を作った - 永遠に未完成
  • threes.vim 作った - 永遠に未完成

    Threes! と言うゲームがあります。 http://threesgame.com/ スマホで遊べるパズルゲームで、単純なのになかなかハマります。先日行った TokyoVim#17 で @kana1 さんもハマっていたので、これは Vim 業界で流行りそうな予感です。 なので、Vim で遊べるように threes.vim 作りました。最低限な感じですが、とりあえず遊べるようになったので公開します。 https://github.com/thinca/vim-threes ルールは公式サイトを見てみてください。 :ThreesStart コマンドを実行すると、こんな感じで始まります。 hjkl で数字を移動していって、大きい数字を作っていきます。ゲームオーバーになるとスコアが出ます。 3327 点でした。 こんな感じで遊べます。今後色付けたりしてもうちょっと遊びやすくしていきたいです。よか

    threes.vim 作った - 永遠に未完成
  • Vim で C# を書くなら OmniSharp で決まり! - 永遠に未完成

    Vim Advent Calendar 2012 の 173 日目の記事です。 今回は C# を書くのに便利な OmniSharp と言うツールを紹介します。これさえあれば、エディタとしての Visual Studio はもう必要ありません! 経緯 (興味ない人はここは飛ばしてインストールのところから読むと良いです) 先日、OmniSharp なるものの存在を教えてもらいました。 @thinca これってでどうなんでしょう URL 2013-05-09 23:47:26 via YoruFukurou to @thinca @mizchi お、面白そうですね!私は知らなかったです。明日あたり見てみますー。ありがとうございます。 2013-05-09 23:51:36 via tweetvim to @mizchi と言うわけで調査してみることにしました。 様々な罠にかかりつつ、ソースコード

  • clever-f.vim を魔改造した話 - 永遠に未完成

    Vim Advent Calendar 2012 の 89 日目の記事です。 昨年、clever-f.vim と言うプラグインが rhysd(@Linda_pp) さんからリリースされました。 https://github.com/rhysd/clever-f.vim どんなプラグインかと言うと、f が便利になるプラグインです。 Vim の f はみなさんご存知ですね。f の次に入力した文字のところまでジャンプする機能です。例えば、fx とするとカーソル位置から次に見付かった x の文字までジャンプできます。l を連打するより速くて便利です。 この機能、便利なんですが、たまに誤爆します。 *clever-f.vim* or *clever-f* extends |f| mapping for more convenience. | ^今 | にいるんだけど、^ まで行きたい。fi だ! *

    clever-f.vim を魔改造した話 - 永遠に未完成
    mollifier
    mollifier 2013/02/28
    fマニアにはたまらん
  • 続・Vim で JavaScript の E4X をハイライトする - 永遠に未完成

    以前こういうのを書いたんだけど、あまりに適当だったのでやはりきちんと使うとボロが出てしまった。 @thinca さん、昨日の URL を試してみました。いい感じです! が、divの入れ子とかになると途中で途切れちゃいますね... 2010-09-03 20:18:35 via Twittperator to @thinca @thinca URL な感じです 2010-09-03 21:51:46 via Twittperator to @thinca なるほどこれはひどい。 ので 修正してみた。 こんなんになります。(colorscheme違うけど) 無駄に new Date とかもハイライトしてる。 きちんと検証しきれてないのでまだ変な事が起こるかも…。 追記 比較演算子の<にも反応してしまっていたのを修正。 演算子の直後にスペースなしで識別子が来ちゃうとまだ反応してしまいます。直せた

  • git pull とかで落ちてきた部分のコミットを見る - 永遠に未完成

    git pull とかやって、だーっと落ちてきたけど、今新しく落ちてきたのってどの部分だよ、とか言うときに使う。 git log HEAD@{1}..HEAD --reverse --reverse は好み。下に行くほど新しいコミットになる。 私は以下のようにaliasしてる。単語的に正しいかどうかは知らん。newlyp は差分も表示する。 newly = log HEAD@{1}..HEAD --reverse newlyp = log HEAD@{1}..HEAD -p --reverse

    git pull とかで落ちてきた部分のコミットを見る - 永遠に未完成
  • Vim から Github Issues が使いたくなったので github.vim を作り始めた - 永遠に未完成

    最近 eskk.vim の Issues とかで Github Issues を割と見るようになった。 で、ブラウザいちいち開くのも面倒だし幸い Github には API があるらしいので、github.vim とか言うのを試しに作り始めてみた。 完成度高めるよりとっとと公開してしまおうってことでとりあえず公開。絶賛プロトタイプバージョン。アルファにも届いてないので興味のある人だけ使ってみてね。 http://github.com/thinca/vim-github 今のところできること Issues のリストの取得/表示 個々の Issue の表示(コメント付き) 新しい Issue の登録 既存の Issue の close/reopen 既存の Issue の編集 コメントの追加 簡単な使い方 " 自分のリポジトリ :Github issues {repos} " 任意のリポジトリ

    Vim から Github Issues が使いたくなったので github.vim を作り始めた - 永遠に未完成
    mollifier
    mollifier 2010/07/01
    github と vim を便利にするプラグインを github と vim で作る。ウロボロス
  • textobj-between 書いた - 永遠に未完成

    極稀に、任意の文字で囲まれた範囲を選択したり削除したりしたいことが当にたまーにあったので書いてみた。名前が適切かどうかは知らん。 Operator-pending mode の時に、デフォルトでは if{char} か af{char} で指定した文字で囲まれた範囲を対象にできる。b じゃありません。b は block がすでにあるし、使い方的にも f の方が分かりやすいだろうし。 GitHub - thinca/vim-textobj-plugins at between: *Obsolete* These plugin were divided into the independent repository. これがあれば、 こことか csv,value-01,value-02,value-03 ^^^^^^^^こことか for (int i = 0; i < len; i++) /

    textobj-between 書いた - 永遠に未完成
    mollifier
    mollifier 2010/06/17
    細かい
  • quickrun.vim で非同期実行できるようにした - 永遠に未完成

    前からやりたいと思っていたのだけど、先日 ujihisa さんが correr.vim なるものをリリースして、これはこの波になるしかないと言う事で勢いで機能を追加した。 quickrun.vim 0.4.0 で使えるよ。 GitHub - thinca/vim-quickrun at v0.4.0: Run commands quickly. 使い方 前提条件 Vim が +clientserver 付きでコンパイルされている必要がある。確認するには、 echo has('clientserver') で 1 が返ってくれば OK。 さらに、v:servername に何かしら名前が入っている必要がある。 echo v:servername で、何か表示されれば OK。されない場合は Vimvim --servername VIMなどとして適当な名前を付けてやる。 複数の Vim

    quickrun.vim で非同期実行できるようにした - 永遠に未完成
    mollifier
    mollifier 2010/02/13
    すごい
  • cmd.exe のコマンドラインの仕様を解析してみた - 永遠に未完成

    cmd.exe の引数の扱いがあまりにもカオスだったのでちょっと頑張って調べてみた。 来ならここは公式の資料に当たるのが正しいアプローチだと思うけど、どうしても公式の資料が見つからなかったので、色々試して推測してみることに。 断片的な資料は見付けたけど、完全じゃない。一応URL貼っておく。Windows Server 2003 のヘルプだけど、恐らくそんなに変わらないと思う。 コマンド シェルの概要 コマンド リダイレクト演算子を使用する なので、以下で述べる内容は間違いを含む可能性があります。というか正確さは一切保証されないのであしからず。 検証方法 以下のような引数をただ表示するだけの簡単な C のプログラムを用意した。仮に args.exe とでもしておく。 #include <stdio.h> int main(int argc, char const* argv[]) { in

    cmd.exe のコマンドラインの仕様を解析してみた - 永遠に未完成
    mollifier
    mollifier 2010/02/11
    cmd, コマンドプロンプト, Windows, シェル, 仕様、概要, 説明、解説。 / 罠ありすぎ。僕なりの結論 : よく分かんないので使わない
  • vimrc基礎文法最速マスター - 永遠に未完成

    調子に乗って vimrc を書くのに特化した内容のものを書いてみる。取り上げた内容は完全に独断と偏見です。 関連記事: Vimスクリプト基礎文法最速マスター - 永遠に未完成 この記事では vimrc を書くにあたって知っておくべき概念や機能を解説します。Vim 自体の操作方法に関しては触れません。 基礎 バッファ バッファは、ファイルを編集するための論理的な領域です。Vim で新しくファイルを開くと、新しいバッファが作成されてそこにファイルの内容が読み込まれます。 ウィンドウ ウィンドウはバッファを画面に表示するための物理的な領域です。分割することができ、1つの画面に複数のウィンドウを表示できます。 タブページ タブページを使うことでウィンドウの配置を保持したまま複数の画面を切り替えることができます。 タブ文字と区別するためか、タブページと呼ばれています。 モード Vim の中でも知って

    vimrc基礎文法最速マスター - 永遠に未完成
  • tmux 1.1 が出ていたので使ってみた - 永遠に未完成

    GNU Screen のように複数のターミナルを仮想的に扱える tmux の 1.1 が出ていたので、以前ちょろっと試して screen に戻ってしまっていたのでもう一度試してみた。 Vim で 256 色を使う まず困ったのは Vim。256色にならないorz でも 256colors2.pl を使うとちゃんと 256 色で表示される。つまりターミナルは問題ない。 どうやら terminal-overrides と言うオプションがあって、それのデフォルト値で terminfo の色数の情報を強制的に書き換えているらしい。が、Vim は $TERM から改めて terminfo を取得するのでこれが反映されない。 無理矢理 :set t_Co=256 としてもいいんだけどそれではなんか負けた気がする。 そもそも GNU Screen の時はなんで大丈夫だったかというと、~/.screenr

    tmux 1.1 が出ていたので使ってみた - 永遠に未完成
    mollifier
    mollifier 2009/11/12
    256color, set-option -g default-terminal screen-256color
  • QuickRun.vim を公開した - 永遠に未完成

    ずっと前からおもに自分用としてちょろちょろ書いてたんだけど、 実装がまだ中途半端 ドキュメントがなかった ujihisaさんの quickrun.vim と名前が被ってる(そして変えるのも面倒) と言った理由で公開はしてなかった。 しかし先日 ujihisa さんに「うぷ」って言われたのでとりあえずやっつけでドキュメントとか書いてソース内のまずそうなところ軽く手を入れて公開した。 http://github.com/thinca/vim-QuickRun/tree/master (ドキュメント) 一応言っておきたいんだけど、これは派生版じゃありません。完全に別物です。というか後から作ったのならわざわざ同じ名前にしないよね。作り始めてからしばらくして ujihisa さんが quickrun.vim を公開したので、「やべぇ名前かぶった」ってなったわけです。ちなみにログ漁ったら作り始めたのは

    QuickRun.vim を公開した - 永遠に未完成
  • スカウターを故障させる - 永遠に未完成

    Vim 使いには戦闘力と言う概念があり、これは所持している vimrc の行数で決まる。 参考資料 戦闘力 - vimグループ http://vim-users.jp/2009/07/hack-39/ 今回私は、戦闘力を飛躍的に上昇させるスクリプトの開発に成功した。以下がそのパワーアップスクリプトである。vimrc を読み込み、このスクリプトを :source することで戦闘力を飛躍的に高めることができる。 1 while search('^\s*\\', 'We') normal! xkJ endwhile silent %substitute/./\r\\\0/g 実際に使ってみよう。現在の私の戦闘力は 1083 である。 そこにこのパワーアップスクリプトを適用すると… 戦闘力 39595!! 「バカな、スカウターの故障か!?」 ちなみにパワーアップ後の vimrc は以下。 \" \

    スカウターを故障させる - 永遠に未完成
    mollifier
    mollifier 2009/10/31
    「バカな、スカウターの故障か!?」
  • neocomplcache.vim のインクルード補完の使い方 - 永遠に未完成

    neocomplcache v3.06 より、インクルード補完(include_complete.vim)が実装された。作者の Shougo さん一押しの機能なのだが、どういった機能なのかよくわからない人もいると思うので勝手に解説してみる。間違っていたら突っ込みよろしく。 include とは Vim には標準で 'include' などのオプションがある。このオプションで C の #include や Java の import を探して、現在編集中のバッファと関係ありそうなファイルからキーワードを検索できたりする。 インクルード補完とは neocomplcache のインクルード補完は、これらの機能を利用して関係ありそうなファイルを探索し、そこから補完候補を出してしまおうという機能。もちろん結果をキャッシュしているので、1 度キャッシュしてしまえば Vim 標準のより速く動作する。 ど

    neocomplcache.vim のインクルード補完の使い方 - 永遠に未完成
    mollifier
    mollifier 2009/10/27
    インクルード補完。#include の先とかから補完できる。すごい
  • 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 書いた - 永遠に未完成
    mollifier
    mollifier 2009/08/20
    いろんな言語のリファレンスマニュアルを見る
  • vcs_info で Subversion のリビジョン番号が出ない問題 - 永遠に未完成

    これは非常に便利そう。 Git だろうと Mercurial だろうと、ブランチ名をzshのプロンプトにスマートに表示する方法 - mollifier delta blog 私も今まではコマンドからプロンプトに情報を出してたんだけど、svnには対応してなかったし、こっちの方が簡潔で正確で詳細な情報が素早く出せそうな気がしたので乗り換えることにした。 導入方法は元エントリに載ってるので割愛。で、Subversionでちょっとした問題が。 Subversionではデフォルトだとブランチ名のところにリビジョン番号が出てくれるはずなんだけど、出ない。 (svn)-[trunk:]ってみたいな感じになる。当なら:の右側にリビジョン番号が出るはず。 どうやら vcs_info は US ロケール前提で作られているらしい。svn info のメッセージとかはロケールで変わってしまうので、うまく検出でき

    vcs_info で Subversion のリビジョン番号が出ない問題 - 永遠に未完成
    mollifier
    mollifier 2009/08/20
    subversionのリビジョンがうまく表示されないのに対応する方法。USロケールを指定すると直る
  • textobj-comment を書いた - 永遠に未完成

    先日のftplugin/javascript_tofunc.vimに続いて今度は textobj-comment を書いてみた。 インストール textobj-userが必要。 ~/.vim/plugin/textobj に突っ込む。まあでも実は plugin 以下ならどこでもいい。 使い方 acでコメント、icでコメントの内側。 コメントはsyntaxを見てコメント部分の連続で判断している。よって、 /* hoge *//* huga */ のようになっていても1つのコメントとして扱われる。 逆にいえばどの言語でもsyntaxさえあれば使える。 コメントの内側は、最初の空白文字の内側で判断している。場合によっては不自然になるけど、統一した判断方法がないので仕方ない。 /* hoge */ <= 赤い部分 dac でコメントを消したり zfac でコメントを折りたためたりできるよ*1。 制

    textobj-comment を書いた - 永遠に未完成
    mollifier
    mollifier 2009/04/23
    vim コメントのテキストオブジェクト。テキストオブジェクト大流行?
  • Vim で JavaScript の e4x をハイライトする - 永遠に未完成

    ~/.vim/syntax/javascript.vim syn include @javaScriptXML syntax/xml.vim syn region javaScriptE4X matchgroup=xmlTag start="<\z(\k\{-}\)>" end="</\z1>" contains=@javaScriptXML unlet! b:current_syntax start= の部分をわざわざ \k にしてるのは、マルチバイト文字もタグ名として認識させたかったため。何か問題があるようなら \w あたりを使えばいい。 b:current_syntax の扱いがこれで正しいのか微妙。とりあえずちゃんと動く。 タグの閉じ忘れとかがあるとちゃんとハイライトが終わらないので、チェックにも便利かも。

    Vim で JavaScript の e4x をハイライトする - 永遠に未完成