サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
ドラクエ3
d.hatena.ne.jp/ka-nacht
vim, releaseku 0.2.0をリリースしました。単一のインターフェースで何でも行うためのVimプラグインです。0.1.xと比較すると、内部構成が整理されより拡張し易いようになり、各種機能がより使い易いように調整・改善され、そして肝心の補完機構の動作速度が10倍以上になりました。内部構成については去年の年末からああでもないこうでもないと練っていたのですが、今月に入ってようやく方向性が定まりました。もうコアについては各種微調整とリファクタリングしかやることはないはず。あとは各種sourceの追加・改良だけです。案なら腐る程あるので少しづつ手を付けていく予定。
git function prompt-git-head-name() { local git_dir="$(git rev-parse --git-dir 2>/dev/null)" if [ -z "$git_dir" ]; then return 1 fi local head_name='' local additional_info='' if [ -d "$git_dir/rebase-apply" ]; then if [ -f "$git_dir/rebase-apply/rebasing" ]; then additional_info="REBASE" elif [ -f "$git_dir/rebase-apply/applying" ]; then additional_info="AM" else additional_info="AM/REBASE" fi he
prog, vim書けば書くほどVim Scriptのアレな点が気になってしょうがない。Vim scriptは基本的にCommand-line modeで入力するEx commandsをそのまま書き下しただけのもので、インタラクティブにちょちょっと使っているだけなら特に気にならないのですが、プログラミング言語として見るとかなりアレです。Ex commandsをベースにしていることに由来する制限事項基本的に1行につき1コマンドしか記述できない。一応、各コマンドを|で区切ることで1行に複数のコマンドを記述することができるが、コマンドによっては|を引数として解釈するために後続に複数のコマンドを記述できない場合がある。その一貫性のなさ。1コマンドが複数行に渡る場合、必ず行継続の記号\を書かなければならない。しかも\は後続の行頭に書かなければならず、他のほとんどの言語のスタイル(行末に特定の記号を記
vimVimを使いこなす上で避けて通れないのがkey mappingです。Vimのデフォルトのキーバインドはそれ自体でもそれなりに優秀なのですが、キーの割り当て方が今一だったり、そもそもキーが割り当てられていない機能も多くあります。それをカスタマイズするための機能がkey mappingです。Key mapping (あるいは単にmappingやmapとも呼ぶ)については:help map.txtを読めば一通りのことは分かるのですが、どういう風に使うべきかという観点からは詳しく説明されていませんし、掲載されているサンプルも実践という観点からは今一です。そこで、基本的なところから始めて、よくあるパターンや使い分けの仕方、そしてハマりがちな落とし穴について述べていきたいと思います。基本Key mappingを定義するコマンドは多数ありますが、基本的な書式は以下の通りです: map [...]
vim, gauche2008年の抱負の一つで挙げていたVimのGauche interfaceですが、ようやく一通りできました。kana's vim at gauche-interface-0.0.0a - GitHubからダウンロードできます。要Gauche 0.8.13 or later。configure時に--enable-gaucheinterpも忘れないように。今のところ、(vim-execute)、(vim-eval)、(vim-apply)といった基本的なものだけがあります。GaucheからVimをコントロールする上での便利なAPIはまだありませんが、それは上記の手続きから導出できるはずです(むしろそのつもりで用意していません)。大体、以下のような感じのことができます: :gauche END (vim-execute "new") (vim-eval "&l:modif
vimなにかと誤解が非常に多いVimのfiletype pluginについての解説。VimM#2でfiletype pluginについてスルーしたのは、以下の分量から察してください。概要Vimはバッファ毎にその内容の種類、例えばPerl/Python/Rubyスクリプトといった情報が保持されており、それは'filetype'というオプションで表される。Filetype pluginとは'filetype'に応じた機能を提供するためのスクリプトである。その性質上、提供される機能はバッファローカルである。Vimは標準で多数のfiletype pluginが同梱されている。どのようなものがあるかはVim内で:edit $VIMRUNTIME/ftplugin/を実行してみれば分かる。:help ft-filetype-pluginで'filetype'に対するfiletype pluginのドキ
vimVimでのエンコーディング関係のオプションは次の通り:'encoding'グローバルなオプション。Vimが内部で用いるエンコーディングを指定する。バッファやレジスタやVimスクリプトでの文字列の中身はこのオプションで指定されたエンコーディングが用いられる。また、他のエンコーディング関係のオプションが未設定ならばデフォルトの値としても用いられる。基本的にvimrc以外で変更すべきではない。また、このオプションを変更しても既存のバッファやレジスタやVimスクリプトでの文字列の中身のエンコーディングは変化しない。(なお、ヘルプでは明言されていないがsystem()の結果は常に'encoding'として扱われ、'fileencoding'への変換は行われない。変換を期待する場合は:read!を使う必要がある。このためにvcscommandは一部で不具合が出る。)'fileencoding'バ
git, svnCodeReposへのやりとりにgitを使おうと思い、手早くリポジトリをセットアップするため、対象をオリジナルのリポジトリの一部に限定かつ変更履歴を省略するため以下のようにしたところ、何もfetchされなくて困りました。 $ git-svn clone -r HEAD http://svn.coderepos.org/share/dotfiles/vim dotfiles-vim Initialized empty Git repository in .git/ $ 何が理由か色々と試してみたのですが、どうやら上記のようにリポジトリの一部/dotfiles/vimに限定してgit-svn cloneをする場合、-rで指定したリビジョンの範囲の変更に/dotfiles/vim下のファイルやディレクトリが含まれていなければならないようです(git-svn clone = gi
vimVimの関数呼び出しでは場合によってとs:を使い分けする必要があるが、実はどのケースであってもを使えば動くには動く。ただというプレフィックスはs:に比べて見辛いため、できればs:を使いたい。ではどの場合にどちらを使うべきか。答えは以下の通り:s::autocmd、:command、:function/:endfunctionの中で使う(推奨 - でも動くには動く)。:map系か:menu系コマンドの中でのみ使う(必須 - s:では動かない)。Vimのカスタマイズに手を出し始めた頃は何故このような使い分けが必要なのか分からなかったが、今、この記事を書いていて思い付いた。:map及び:menuの定義時に与えられた{rhs}だけでは、その中に出現するs:の意味・用途を正確に判定することができないからだ。例えば以下のような定義があったとして: nmap =x =:=call=func=ret
vim, book, disVim特集があると聞いて「Software Design 2008年7月号」を購入しました。最初は立ち読みで済ませようかと思いましたが、id:taku-oさんが記事を書いていると知ったので、これは買わざるを得ないということになりました。という訳で各記事をdisるとします。1章 - Vimスクリプト入門 / 吉田佳宏P143 - ローカル変数g:やs:等の接頭辞のない変数のスコープは文脈によってグローバルかローカルかが変わる。(これは最初から挙げるような話題ではないが)無接頭辞の変数のうち、名前が定義済み変数(v:)と同じものは後者の変数として扱われる。この点はP143の「定義済変数」の節でも触れていない。本文中の説明では、無接頭辞の変数のスコープは全てローカルであるようにしか読めない。そもそも何に対してローカルなのかの説明が一切ない(l:は関数内部でのみ有効)。
vimaltftsys - alternative filetype scripts loader (2008-09-28 pending)transpose - transpose 2 text objectspatch: maparg() cannot distinct global mappings and buffer-local mappings, it's impossible to temporarily override some key mapping (more precisely, to restore temporarily overridden key mapping.)patch: glob() and globpath() with a {foo,bar,baz} pattern show unexpected hit-enter prompt in wind
このページを最初にブックマークしてみませんか?
『d.hatena.ne.jp』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く