2012年01月18日

unite.vimのsourceをファイルに分けて作ろうとしたらハマった件
このエントリーをはてなブックマークに追加  

unite.vimのsourceを.vimrcにベタで書いていたりするんですがある程度汎用的に使えそうなのは別ファイルとして書きだしておこうとやってみました。

autoload/unite/sources/の下に*.vimという感じで置いておけば読み込んでくれるとのことだったのですが、結論から言うと.vimrcに書いてたものをそのまままるっとファイルに出してもエラーが出てうまく読んでくれなかった。

vim力が高まらなかったので中々なんでエラーになってるかわからなかったのですが、

Vim-users.jp » Hack #197: unite.vim の source を作成する

によるとautoload/unite/sources/下に置く場合はunite#define_sourceで定義するのではなく

function! unite#sources#hoge#define()
  return s:unite_source
endfunction

ってしないとダメみたい。ただこれでもうまくいかず結局unlet s:unite_sourceを消したらちゃんと動くようになった。

必要なくなったs:unite_sourceはunletしとくみたいな記述をよく目にしていたのですが、autoload/unite/sources/下に置く場合はunletせずに残しておかないといけないのかな。

vim力が高まらなくunite自体のソースを理解できていないので死ぬほどハマってしまったorz

posted by ダメ人間 at 02:47 | Comment(0) | TrackBack(0) | vim
このエントリーをはてなブックマークに追加   

2012年01月07日

自分で設定したvimのショートカットとかすぐ忘れる対策
このエントリーをはてなブックマークに追加  

vimの便利そうなプラグインを入れてはすぐ忘れてしまったり、自分でショートカット作っといてすぐ忘れたりすることが多すぎるのでオレオレhelpみたいなのをuniteで表示させるようにした。

利用頻度が多くなかったりするコマンドはどう動くかは覚えてるけど指定の仕方忘れてたりするので簡易インデックスみたいな感じで。

,uhと打つと表示させるようにした。とりあえず見れればいいという思想なのでひとまず全部wordで。本当ならエンター押したらその機能動かせたりしたほうがいいんやろけどあくまでインデックスということなのでこうしといた。ビジュアル選択のもあるし区別するの面倒やし。

unite系の呼び出しは全部,u*にしてるけど、色々追加していくと区別がつかなくなってきたりするので一旦uniteでsource一覧表示させて選択したらそれをuniteで表示させるようにしたほうがいい気もしてる。けど標準+αぐらいの数なのでそれはおいおいでいいかなーとか思ってる。既にそういうsourceがあったりする気もするので必要になったらまた考える。

posted by ダメ人間 at 05:36 | Comment(2) | TrackBack(0) | vim
このエントリーをはてなブックマークに追加   

gitで特定コミットのコミットされた時刻だけを取得する
このエントリーをはてなブックマークに追加  

特定コミットの情報を表示させるにはgit showコマンドを使うと思いますが、その中からコミット時刻だけを取りたいというような場合。

例えばHEADの情報を表示させるには

git show HEAD

commit d520594c8750b0531344415ec3d3f66b9ba1d7f5
Author: dameninngenn 
Date:   Sat Dec 31 18:09:38 2011 +0900

    unite-scripts/nicoranking.pl

diff --git a/.vimrc b/.vimrc
index 255a5d1..15733e1 100644
--- a/.vimrc
+++ b/.vimrc
@@ -347,6 +347,9 @@ nnoremap  up  :Unite phrase
 vnoremap  1  :BlockDiff1
 vnoremap  2  :BlockDiff2
 
+" Unite用スクリプト
+nnoremap  un :Unite script:perl:~/.vim/unite-scripts/nicoranking.pl
+
 " http://subtech.g.hatena.ne.jp/motemen/20110817/1313577108
 nnoremap   ( :call PreviewOpenBrace()
 if !exists('*PreviewOpenBrace')
@@ -461,6 +464,7 @@ function! s:unite_source.gather_candidates(args, context)
   \   { 'word': ',r 【スクリプト実行】[quickrun]', 'source': 'my_help', 'kind': 'word' },
   \   { 'word': ',yr 【yankリスト表示】[yankring]', 'source': 'my_help', 'kind': 'word' },
   \   { 'word': ',1/,2 【選択範囲のdiff表示】[blockdiff]', 'source': 'my_help', 'kind': 'word' },
+  \   { 'word': ',un 【ニコニコ動画のランキング表示】[unite-scripts]', 'source': 'my_help', 'kind': 'word' },
   \   { 'word': '( 【今いるスコープの括弧を表示】[user]', 'source': 'my_help', 'kind': 'word' },
   \   { 'word': 'dit 【XMLタグに囲まれた範囲を削除】[system][xml]', 'source': 'my_help', 'kind': 'word' },
   \   { 'word': ':GoogleTasks 【googletasksの内容を表示】[command][googletasks]', 'source': 'my_help', 'kind': 'word' },

こんな感じで表示される。時刻はDate:の部分ですね。

ここで--pretty=formatのオプションで時刻だけ表示させようとすると、

git show --pretty=format:"%cd" HEAD
Sat Dec 31 18:09:38 2011 +0900
diff --git a/.vimrc b/.vimrc
index 255a5d1..15733e1 100644
--- a/.vimrc
+++ b/.vimrc
@@ -347,6 +347,9 @@ nnoremap  up  :Unite phrase
 vnoremap  1  :BlockDiff1
 vnoremap  2  :BlockDiff2
 
+" Unite用スクリプト
+nnoremap  un :Unite script:perl:~/.vim/unite-scripts/nicoranking.pl
+
 " http://subtech.g.hatena.ne.jp/motemen/20110817/1313577108
 nnoremap   ( :call PreviewOpenBrace()
 if !exists('*PreviewOpenBrace')
@@ -461,6 +464,7 @@ function! s:unite_source.gather_candidates(args, context)
   \   { 'word': ',r 【スクリプト実行】[quickrun]', 'source': 'my_help', 'kind': 'word' },
   \   { 'word': ',yr 【yankリスト表示】[yankring]', 'source': 'my_help', 'kind': 'word' },
   \   { 'word': ',1/,2 【選択範囲のdiff表示】[blockdiff]', 'source': 'my_help', 'kind': 'word' },
+  \   { 'word': ',un 【ニコニコ動画のランキング表示】[unite-scripts]', 'source': 'my_help', 'kind': 'word' },
   \   { 'word': '( 【今いるスコープの括弧を表示】[user]', 'source': 'my_help', 'kind': 'word' },
   \   { 'word': 'dit 【XMLタグに囲まれた範囲を削除】[system][xml]', 'source': 'my_help', 'kind': 'word' },
   \   { 'word': ':GoogleTasks 【googletasksの内容を表示】[command][googletasks]', 'source': 'my_help', 'kind': 'word' },

となって上部のとこは時刻だけにまとまってますが、diffは表示されたままになります。

詳しくは調べてないですがgit showはlog部分とdiff部分で別々のものを組み合わせて表示してるという感じなのでしょうか。時刻だけ取りたいのに下のdiffの部分はいらないので--quietオプションで消します。

git show --quiet --pretty=format:"%cd" HEAD

これで

Sat Dec 31 18:09:38 2011 +0900

だけとってこれます。formatの%cdを%ctとかにするとepochでとれたりしますね。

HEADのかわりにタグ名とか特定コミットのSHA1とか指定すれば好きなとこの時刻がとってこれます。

git-logとかgit-showは指定できるオプション多すぎてよくわからない。。

posted by ダメ人間 at 05:31 | Comment(0) | TrackBack(0) | git
このエントリーをはてなブックマークに追加