タグ

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

  • 続・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 とかもハイライトしてる。 きちんと検証しきれてないのでまだ変な事が起こるかも…。 追記 比較演算子の<にも反応してしまっていたのを修正。 演算子の直後にスペースなしで識別子が来ちゃうとまだ反応してしまいます。直せた

  • help と conceal - 永遠に未完成

    Vim 7.3 に追加された新機能に conceal と言うものがあり、これを使うとシンタックスハイライトされた要素の表示を消すことができる。対象自体がなかった文字のように文字が詰めて表示される。 これを利用して、Vim の help ファイルでは *hoge* の * や、|huga| の | を見えなくしている。なかなかナイスである。 しかし、Vimプラグイン作者で help を自分で書く場合はこれはいささかわかりづらい機能でもある。挿入モードに入ると現在の行の隠された文字は見えるとは言え、常に見えていた方が編集時にはわかりやすいと思う。 そこで、以下の設定を追加する。 " after/ftplugin/help.vim if &buftype != 'help' if has('conceal') setlocal conceallevel=0 endif endif これで編集用に

    help と conceal - 永遠に未完成
    tsukkee
    tsukkee 2010/08/09
  • 特定の文字列で始まるグローバル変数を列挙する - 永遠に未完成

    なんかやたらと設定用のオプションの変数が多いプラグインがあると、どんな変数があって今どんな値が入っているのか知りたくなることがある。てことで私のvimrcには以下のようなコマンドが定義してある。 command! -nargs=+ Vars PP filter(copy(g:), 'v:key =~# "^<args>"') PP は prettyprint.vim のもの。なければ echo でもいいけど絶対見づらいので prettyprint.vim 推奨。 で、これを使うと以下のようなことができるようになる。 :Vars ref_ { 'ref_alc_cmd': 'elinks -dump -no-numbering -no-references %s', 'ref_alc_encoding': '', 'ref_alc_start_linenumber': 37, 'ref_al

    特定の文字列で始まるグローバル変数を列挙する - 永遠に未完成
    tsukkee
    tsukkee 2010/07/15
    g:でグローバル変数全部がハッシュとして得られるのか,b:もできた
  • Windows で Vim をソースコードからビルドする - 永遠に未完成

    7.3 の開発も始まり今もアツい Vim。先日スナップショット版のWindows用のインストーラも公開されたが、それ以降の最新の機能を試したい場合や好みの機能を入れるには、自分でソースコードからビルドする必要がある。 ただソースコードからのビルドは中々にハードルが高いので、自分へのメモの意味も込めてちょっと手順をまとめてみることにした。 開発環境を用意する ソースコードをビルドするためには、まず開発環境が必要です。 Visual C++ か MinGW をインストールしておきます。インストール方法についてはここでは省略します。 ソースコードを取得する Mercurial をインストールする 現在 Vim の最新版は Mercurial リポジトリで管理されています。なので、まずは Mercurial をインストールする必要があります。 Mercurial SCM インストールは省略。Win

    Windows で 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 書いた - 永遠に未完成
    tsukkee
    tsukkee 2010/06/21
  • Dropbox on Linux without X - 永遠に未完成

    Dropbox を X なしの Linux で動かすのにようやく成功したので、忘れないうちにメモしておく。 Dropbox の公式 CLI クライアントを入手する $ wget https://www.dropbox.com/download?dl=packages/dropbox.py $ chmod a+x dropbox.py $ mv dropbox.py ~/bin/dropbox $ dropbox help Dropbox command-line interface commands: status get current status of the dropboxd help provide help puburl get public url of a file in your dropbox stop stop dropboxd start start dropbox

    Dropbox on Linux without X - 永遠に未完成
  • ref.vim の内部構造を大幅に書き換えた - 永遠に未完成

    ref.vim の内部構造が全然別物になった。 とは言ったものの、使う側からするとあまり変化はない。 普通の人は内部構造なんて興味ないと思うので、先にそれ以外で変更した部分を挙げておく。 外見的な変更点 ref#jump() 前からあったんだけど、ドキュメントには書いてなかった。今回使い方を変えてドキュメントにも書くようにした。いるかわからんけど、以前から勝手に使ってた人は使い方が変わってるので注意。 これを使うとカーソル位置からキーワードを拾って ref を開けるので、例えば nnoremap <silent> <Space>K :<C-u>call ref#jump('normal', 'alc')<CR> vnoremap <silent> <Space>K :<C-u>call ref#jump('visual', 'alc')<CR> などとしておけばどこでも K で辞書が引ける

    ref.vim の内部構造を大幅に書き換えた - 永遠に未完成
    tsukkee
    tsukkee 2010/04/19
  • Vim プラグインの開発スタイルのお話 - 永遠に未完成

    Vim のプラグインって作ってる最中は Vim 自体の動作も不安定になりがちだし、普段の環境と同じ環境で作ってるとなにかと弊害が起きがち。ちょっとした変更ならまだしも、大規模な変更は 1 度の作業で終わらないこともあるし、作業中断して別のことをやることになったりするとさらに面倒。 または、VCS でプラグインを管理したくて、プラグインごとにリポジトリを独立したいけど環境分けるのが面倒だとか。 というわけで私が普段やってる Vim プラグインの開発スタイルを晒してみようと思う。 設定 私の vimrc には最後の方に以下の記述がある。 " Load settings for each location. augroup vimrc-local autocmd! autocmd BufNewFile,BufReadPost * call s:vimrc_local(expand('<afile

    Vim プラグインの開発スタイルのお話 - 永遠に未完成
    tsukkee
    tsukkee 2010/03/05
  • cmd.exe のコマンドラインの仕様を解析してみた - 永遠に未完成

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

    cmd.exe のコマンドラインの仕様を解析してみた - 永遠に未完成
  • poslist.vim - 永遠に未完成

    始まりは、ujihisaさんの何気ない一言だった。 ^で行頭に戻って その後、戻る前の場所に戻るなどしてみたいです C-oだとダメなんですよね http://lingr.com/room/vim/archives/2009/12/18#message-130965 それに Shougo さんが反応した。 maしてから移動して、`aする。 まぁ、手間は増えてしまうんですけど。 自動的に記録してくれないかなー ! できそうな気がしました。ちょっとやってみます。 http://lingr.com/room/vim/archives/2009/12/18#message-130972 で、出来上がったのが以下。 http://gist.github.com/259331 ちょっと使ってみたけど、思いのほか便利かも。で、 getposlist.vimをplugin化しました。ご自由にお使いください。

    poslist.vim - 永遠に未完成
    tsukkee
    tsukkee 2009/12/28
  • 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 が出ていたので使ってみた - 永遠に未完成
    tsukkee
    tsukkee 2009/11/14
    set-option -g default-terminal screen-256color
  • neocomplcache.vim のインクルード補完の使い方 - 永遠に未完成

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

    neocomplcache.vim のインクルード補完の使い方 - 永遠に未完成
    tsukkee
    tsukkee 2009/11/14
  • vcs_info で Subversion のリビジョン番号が出ない問題 - 永遠に未完成

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

    vcs_info で Subversion のリビジョン番号が出ない問題 - 永遠に未完成
  • Re: vimの勉強〜タグジャンプの勘どころ〜 - daffy log - 永遠に未完成

    .vimrcに以下を追加 set tags=.tags *nixだと.で始まると見えなくなるので上記の様にした。 また、上の様にディレクトリを指定しないと、カレントディレクトリから親をたどってtagsファイルを探してくれる。 vimの勉強〜タグジャンプの勘どころ〜 - daffy log 辿って探してくれません。この指定だとカレントディレクトリにある.tagsしか見ません。 辿ってほしければ set tags=.tags; とします。最後のセミコロン重要。 ちなみに set tags=./.tags; のように./で始めるとカレントディレクトリからではなく、対象のファイルのあるディレクトリからの相対位置になります。多分こっちの方が便利。 'tags'オプションに指定するセミコロンは便利なのに割と知られていないので紹介してみた。詳細は :help file-searching

    Re: vimの勉強〜タグジャンプの勘どころ〜 - daffy log - 永遠に未完成
    tsukkee
    tsukkee 2009/07/23
    セミコロン重要
  • KaoriYa 版で追加される機能まとめ - 永遠に未完成

    KaoriYa 版 Vim では日語を使う際に便利な patch が多数当てられている。patch 自体は体に付属しているが、そこ以外で体との差分をまとめたものが見当たらなかったので、patch を参考に家からの変更点をまとめてみた。 足りない部分や勘違いしている部分がある可能性があるので、突っ込み歓迎。 確認に使ったバージョン Vim 7.2-20090321 香り屋版 runtime syntax/memo.vim 新規に追加。どんなものかは README_w32j.txt を開いてみればわかる(このファイルが ft=memo に設定されている)。 syntax/java.vim javadoc コメント内の最初の一文は専用の色でハイライトされるが、"." だけでなく "。" で終わる部分も文として認識するように修正されている。 syntax/2html.vim ftp://~

    KaoriYa 版で追加される機能まとめ - 永遠に未完成
    tsukkee
    tsukkee 2009/06/19
    set go+=C があついw
  • インターフェースを使わずに Vim スクリプトに他の言語を埋め込む - 永遠に未完成

    Vim スクリプトを書いていると、どうしても Vim だけの機能では難しい、または面倒な場面にでくわすことはよくある。特に通信周りなんかはそうだ。 外部コマンド 1 つで済めばいいが、複雑になってくると Ruby などでスクリプトを書きたくなってくる。かと言ってファイルが増えるのは嫌だし、そもそも plugin ディレクトリなどに .rb などのファイルが入るのも気にくわない。 そこでいっそ Vim スクリプト内にコードを書きたくなるわけだけど、各種言語のインターフェースはオプションなので、組込まれていない Vim では使えなくなる。マシン自体に言語環境は入っているけど Vim には組込まれていない、なんてことは割とありがち。外部コマンドとしてなら使えるのに…。 と言うわけで、Vim スクリプトにインターフェースを使わずに他の言語を埋め込む方法。用途を考えると半分ネタなのであんまり気にし

    インターフェースを使わずに Vim スクリプトに他の言語を埋め込む - 永遠に未完成
  • textobj-function-javascript と textobj-function-perl 書いた - 永遠に未完成

    id:ka-nacht さんが TOFunc を textobj-function と言う形でリリースしてくれたので、以前私が書いた javascript_tofunc.vim を追従させる形で修正した。 詳細は前回のエントリを見てもらうとして、挙動の変更点がいくつか。 変更点 if (inner function) の挙動を変更 関数の{から行末までの間、および}から行頭までの間が全て空白文字だった場合、行指向の関数とみなし内側を行指向で選択するようにした。 id:ka-nacht さんに指摘されて変更。こちらの方が便利な場合が多いはず。 countに対応 count を指定 (2daf など)すると、count個外側の関数が選択される。javascript は関数を入れ子で書くことが多いので、使えた方が便利なはず。 ソース 前回のとは互換性がないので新しくgistに貼った。 http:

    textobj-function-javascript と textobj-function-perl 書いた - 永遠に未完成
    tsukkee
    tsukkee 2009/04/29
  • 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 をハイライトする - 永遠に未完成
  • 勝手にプラグインを比較してみるテスト - 永遠に未完成

    今使ってるVimプラグインで、似たような機能を提供するもの同士を比較してみるテスト。あくまで個人的な比較なので参考程度に。と言いたいけど細かい説明相当端折ってるので参考にもならないかも。 ここで挙げている特徴はもう一方に対する特徴であり、もう一方にはないと言う意味。細かい機能を全部列挙してると大変なので、有名どころ、個人的に重要な機能を中心にピックアップ。 ちなみに私の環境には以下で比較してるプラグインは全て入っていて、たまに気まぐれに使う方を切り替えたりしてる*1。 fuzzyfinder.vim vs ku.vim バッファやファイルなどを曖昧に選択できるプラグイン。 どちらも起動すると上部分に小さな選択用ウィンドウが開かれ、選択候補がポップアップで表示される。 両者の違い fuzzyfinder.vim ku.vim 比較バージョン 2.19 0.1.9 候補選択用ウィンドウの開かれ

    勝手にプラグインを比較してみるテスト - 永遠に未完成
    tsukkee
    tsukkee 2009/03/07
    fuzzyfinder.vim vs ku.vim, autocomplpop.vim vs neocomplcache.vim
  • Windowsで:set encoding=utf-8する方法 - 永遠に未完成

    Vimの'encoding'オプションはVimが内部で扱うエンコーディングを設定する。この値がcp932やsjisなどだと、ユニコード文字が表示できない。今時ユニコード文字の表示なんてメモ帳でもできる。メモ帳に負けていいのか!否! と言うわけで是非とも:set encoding=utf-8で使いたいわけだが、Windowsでこれをやるとシステムメッセージなどが見事に文字化けする*1。で、これを回避する方法*2。 言語ファイルを入手する download : vim onlineから言語ファイル(ftp://ftp.vim.org/pub/vim/extra/vim-7.2-lang.tar.gz)をダウンロードしてくる。 中身からja.poを取り出し、UTF-8に変換する。 ja.sjis.poもあるが、これはダメ。中にダメ文字を回避するバックスラッシュが入ってる。 Vimでやる場合は、j

    Windowsで:set encoding=utf-8する方法 - 永遠に未完成