スキップしてメイン コンテンツに移動

投稿

ラベル(vimscript)が付いた投稿を表示しています

ディレクトリのパスをブックマークして denite.nvim で表示するだけの Vim Script を書きました

ディレクトリのパスをブックマークして denite.nvim で表示するだけの Vim Script を書きました 書きました。 denite-dirmark と命名しました kmnk/denite-dirmark このエントリは書いたことを宣言すること及び、万が一興味を持った人がいた場合に何となく使えそうかを判断できるようにすることを目的にしています 更新履歴 2018-08-11: 公開 2018-08-18: dirmark/add の source のベースを directory_rec から file に変更したので微修正 どうつかうのか add したり delete したりする操作を gif 動画にしてみました なぜつくったのか 自分が欲しかったからです 普段カレントディレクトリを各プロジェクトのルートに持っていって作業するのが癖で、その用途でこれまでは unite の bookmark source を使っており、 denite に移行させたかったというのが詳細の動機です なにができるのか 機能としては大体以下を持っています :Denite dirmark : 保存されたディレクトリのリストを表示。 kind のベースは directory delete action: ディレクトリを dirmark から削除 :Denite dirmark/add : file  で取得したディレクトリのリストを表示。 kind のベースは directory add action: ディレクトリを dirmark へ追加 wide action: directory_rec の起点をターゲットディレクトリの上へ移動 一応 README.md を用意しています(雰囲気英語で書かれています) カスタマイズ 参考までに、自分は以下のような感じで呼び出しています nmap <Leader>dd <SID>(dirmark) nmap <Leader>da <SID>(dirmark-add) nnoremap <silent> <SID>(dirmark) :<C-u...

gitn 開発中

gitn 開発中 ブログを移行してから初のエントリー。 既に一年経過していることに戦慄しつつ。 unite.vim の source として自分用に vim-unite-giti を作っていましたが、 neovim 上で動く denite.nvim が unite.vim の後継として開発が進んでいるので、 git 用 source も denite.nvim 用に作っていきたい、ということで新たに gitn という名前で denite.nvim 用 source を作り始めました(一応 giti 自体は neovim x unite.vim 上でも動きます)。 giti の時も適当でしたが、今回も命名は適当です。多分 GIT source for Neovim 略して gitn とかです(多分)。 そも、まだまともに python を書いたことがなかったので、 denite.nvim のソースコードを読みつつ、ちびちびと手探りで作っておりますが、とりあえず status コマンド周りが一応動くようになったので、第一報。 といってもまだ大した機能は無いです。簡単なドキュメントを書いたので こちら をご参照ください。 使ってる様子はこんな感じ。 機能としてはとりあえず giti 準拠の物をコピーしていくだけなので、あまり派手なことは起こらないですが、 neovim ぽい挙動(主に terminal 周りだと思います)を入れたり、 今までは情報がテキストのみだったので、 highlight を入れて色で意味を読み取りやすくしたりとかを入れて行きたいなと思っています。 機能が増えてきたらまた進捗報告を書こうかと思います。 とりあえずは giti で事足りるので、気長に見ていただければ。 以上。

git を操作したい時にちょっと便利かもしれない unite-source を書いています

こんばんは。この記事は、 Vim Advent Calendar 2012 の 50日目の記事です。 49日目は、 @uryt さんの vim.orgにアップロードされていないプラグインがあるかチェックするgit-unreleased-vimplugins作った でした。 本日は、長いこと自前で作成している、 unite を利用して 簡単な git 操作を行える unite-source 、 giti を紹介します。 vim-unite-giti https://github.com/kmnk/vim-unite-giti これは何? 初期構想としては、自分の自分による自分のための git 操作用 unite source です。 現在はドキュメントも書いたので、自分以外の方にも、お使いいただける物になっていると思います。 言わずと知れた unite のインターフェースを用いて、 git の色々な操作を実現するための plugin's plugin になります。 unite を使って git 操作をしたい気持ちになる方に、是非使ってみて頂きたいです。 普段の仕事でヘビーに使っているので、基本的な操作に関しては、この source で(多分)完結できるはずです。 何故作ったの? git の vim plugin と言えば、有名な vim-fugitive があります。 自分も、仕事で使うバージョン管理システムが svn から git に移行したタイミングで、最初は使おうとしていました。 ですが、長らく(こちらも自前の) vim-unite-svn で、バージョン管理システムを unite 経由で使うことに慣れきってしまっており、 差分をコミットするごとにフラストレーションが溜まり、限界を超えた頃、気づくと自前で作成していました。 何ができるの? (自分が仕事を使ってる分には不自由しない程度に)基本的な操作は大体出来ます。 source 名を羅列すると、以下のような物を用意してあります。 * giti/branch, giti/branch_all * giti/config * giti/log * giti/remote * giti/status それぞれ、簡単に説明してみます。 giti/branch, giti/branch_all git br...

sonictemplate-vim の unite souce を書いてみた

ファイルタイプ別にテンプレートを選べるsonictemplate-vim書いた - Big Sky 上記エントリで、 mattn さんが作成・公開されたテンプレートプラグインで用いるテンプレートを、リスト表示して適用する unite source を書いてみました。 plugin自体は導入していたんですが、使いこなせていなかったため、勉強も兼ねて。 便利な差分を書いた!という感じのことをした場合、 こういう独自記事を書くんじゃなくて、pull リクエストを送って評価してもらうのが筋なんでしょうか… そうするべきという感じであればこのエントリは削除して pull リクエストを送ってみます。 取り急ぎ、非常に恐れ多いのですが、晒してみます。 ざっと探した感じでは類似の物は無かったと思うのですが、既にどこかにあったらすみません。。 - forkして手を加えたリポジトリ --  https://github.com/kmnk/sonictemplate-vim - 使い方(ドキュメント追記差分) -- https://github.com/kmnk/sonictemplate-vim/commit/0aebcc039d55cb2b2fdf43efbe1b5dd118dd3333 unite source に加えて、template を格納するディレクトリを複数指定できるように、少し改造しています。 動作例 : hoge.pl を新規に開いて base テンプレートを適用した後、 :Unite sonictemplate を実行 オリジナルのpluginに補完関数が定義されているため、template 名の補完は効くようになっているのですが、自分の記憶領域の容量が非常に少ないので、一覧できるととても助かる気がします。  一段階挟むことになるので、即時性は失われますが、 -input と -immediately を組み合わせてmapを工夫すればそれも克服できる…はず… ついでに vim script 用のtemplateもちょっと書いてみました。 https://github.com/kmnk/config/tree/master/vim/dot.vim/templates/vim vim script のtemplateはpull リクエストしても良いか...

git status と git branch ができる unite の source 書いた

書きました。 https://github.com/kmnk/vim-unite-giti すでに有りそうな気もするんですが、今のところ知らないのと、 http://kmnk.blogspot.com/2011/02/unitesvn-statussvn-diffsource.html で書くといって既に一年経っているのとで自分で書いてみました。 まだ仕事でがっつり使っていないので、バグや動作不全などあるかもしれません。 昔作った svn と違って何故か vim-unite-git じゃなくて giti なのは、日和っただけで深い意味は無いです。 インストール方法は割愛します。unite.vim 使っている方なら余裕なはずという想定で… 作ったsourceの名前は以下。 giti/status giti/branch 追記(02/29): READMEには追加しているんですが、sourceをいくつか追加しました。以後は README.markdown を参照してください。 giti giti/log giti/config  追記ここまで(02/29) それぞれ、独自 kind を定義していて、以下のactionを持っています。 giti/status add $ git add $FILES rm_cached $ git rm --cached -- $FILES reset $ git reset HEAD $FILES commit $ git commit $FILES amend ←動作が怪しい $ git commit --amend $FILES checkout $ git checkout -- $FILES diff $ git diff $FILES diff_cached $ git diff --cached $FILES git/branch run $ git checkout $BRANCH_NAME or git checkout -b $NEW_BRANCH_NAME delete $ git branch -d $BRANCH_NAME その他、以下の関数を用意しています。key map などして使えるかもしれないです。 giti#branch#delete_force(branch) $ git branch -D...

コマンド3発で割と最近のvim環境が構築できるパッケージを作ってみた

社内でuniteを布教しようとするも、vimscriptはインストールが面倒くさいと、なかなか広まらないので、makeコマンドを打てば勝手に環境を構築してくれるパッケージを作りました。 https://github.com/kmnk/vimrc-builder Shougoさん作の neobundle.vim を使わせて頂いて、もりもり僕が割と良く使う vim plugin をインストールして、とりあえず使えるようにします。 $ git clone git://github.com/kmnk/vimrc-builder.git $ cd vimrc-builder $ make mapleader を Space にしていて、unite 関連のkeymapは基本的に Leader × 2 を始動にしているので、大体はスペース2連の後何がしかを打つと unite の何かが動くようにしています。 https://github.com/kmnk/vimrc-builder/blob/master/vim/profiles/unite.vim これを基にして、社内環境に合わせてカスタマイズした物を社内リポジトリにアップしてみようかと目論んでいますが、使われるかなぁ。。 精神に余裕のあるときにデフォルトで入れているキーマップを書きます。

vimスクリプトのuniteでsvn statusとsvn diffするsource書いた

書きました。 普段使い用に自己満足化した状態で作ってしまっているので、 必要だろうと思われる設定や機能等、教えていただけるとありがたいです。 更には“既にもっと便利なプラグインあるよ!”みたいなのもあれば教えていただけると助かります。 使い方は unite.vim を入れた上で、autoloadディレクトリをマージしてもらえればいけると思います。 そもそも Unite とは、emacsのanythingプラグインと似た感じの動作をするvimのプラグインです。すばらしいですね! Uniteを開発されているShougoさんのリポジトリ(github):https://github.com/Shougo/unite.vim ということで僕が書いた駄ソースは以下になります。 https://github.com/kmnk/vim-unite-svn svn/statusに対してsvnコマンドを実行するactionを拡張していますが、ベースは jump_list なので特に違和感は無いと思います。 拡張しているのは以下のコマンドです。 複数選択可 commit add revert delete diff 複数選択不可 blame log 以下、簡単な動作説明 Unite svn/status すると 簡単な一覧が出ます。 Tabでメニューを出して add と打って実行すると svn addされてステータスが変わります。 複数ファイルの場合もスペースでマークして Tabでメニューを出して commit と打って実行すると コメント入力画面になるので(普段使わないので -m 対応してないです)、記述して:wqで コミットされます。 適当に編集すると差分が発生するので 選択して diff と打って実行すると Unite svn/diff:{file name 1}:{file name 2}:... が実行された結果が出るので、見たい行を選択して Enter を押すと デフォルトの open が動作して対象ファイルの対象行に飛びます。 一部を選択して操作するのが若干簡単になるかもしれません。 特に今のところ status と diff に関してはこれ...