cafegale(LeafCage備忘録)

LeafCage備忘録(はてなダイアリー)と統一しました。

Vimコマンドラインのキーマッピングを改造するプラグイン作りました。

vim

LeafCage/cmdlineplus.vim 提供している機能は、単語単位の移動、Emacsライクなキル、特定キャラクタのエスケープ、レジスタやクリップボードに現在のコマンドラインの内容をセットする、以上になります。

lastmess.vimで表示されるメッセージのハイライトをいろいろ定義できるようにした。

vim

LeafCage/lastmess.vimについて メッセージの開始と、メッセージの中身の色を定義できるようにした g:lastmess_highlight_errstartとg:lastmess_highlight_errcontentsを指定することで、 エラーの開始点と内容が色分けされてこのようにエラーメッセージが見…

Vimにパッチが当てられるまでの間、Windowsでとりあえず外部grepを使えるようにする

vim

mattnjvgrepの問題、vimを直すしか方法ない vimがCreateProcessWを使えば解決 たしかパッチは出してあってtodoに入ってたと思う http://lingr.com/room/vim/archives/2013/12/05#message-17742024 とのことなので、それまでは我慢と工夫で乗り切るしかないの…

最新版のjvgrepをコンパイルするにはgo言語とMercurialが必要だった

vim

# go get github.com/mattn/jvgrepというコマンドを実行するにはThe Go Programming Languageが必要だった。 しかも$GOROOT $GOPATHという意味不明な環境変数を設定しなければいけなかった。さらに、それに使われているmahonia - Mahonia—a character-set co…

コマンドラインで :b を実行するときにバッファリストを表示する

vim

Vim - hjklマスターに薦める意外と便利な機能 - Qiita [キータ] の バッファを選択する際に、同時にリストを表示する nnoremap B :ls<CR>:b という設定を見て閃いた。 cnoreabb <expr>b getcmdtype()==':' && getcmdline()=='b' ? 'ls<CR>:b' : 'b' こうすればコマンドライ</cr></expr></cr>…

nebula.vimを使ってneobundle#tap()をより高速に書く

vim

Shougo/neobundle.vim に ももんが流NeoBundle管理術 | かなりすごいブログ から機能が取り込まれneobundle#tap() neobundle#untap()が使えるようになりました。 新・ももんが流NeoBundle管理術(あたらしい) | かなりすごいブログ これを利用するとだいた…

コマンドラインからシームレスにover.vimの全体置き換えを使う

vim

私は今まで:sについて以下の設定をしていた。 cnoreabb <expr>s getcmdtype()==':' && getcmdline()=~'^s' ? '%s/<C-r>=Eat_whitespace(''\s\\|;\\|:'')<CR>' : 's' function! Eat_whitespace(pat) "{{{ let c = nr2char(getchar(0)) if c=~a:pat return '' elseif c=~'\r' </cr></c-r></expr>…

'nobuflisted' なバッファの作り方

vim

Vim Advent Calendar 2012 356日目の記事です。 バッファをバッファリストに登録したくないときがあります。 バッファリストに登録されていないバッファは:lsでは表示されず、:bnext :bpreviousでのバッファ切換の対象になりません。 また、Vim終了時に次回…

Vimスクリプトのファイル先頭にscriptencodingを書く意味

vim

LeafCage ファイルの先頭でscriptencoding を書くのはどういった利点があるのでしょうか?今までscriptencodingを書いてこなかったのですが、書いておくとVimがencodingを調べることがなくなって読み込み速度がアップするのでしょうか? thinca マルチバイト…

README.mdをVimのヘルプファイルから生成する

vim

この記事はVim Advent Calendar 2012の341日目の記事です。 前回(84日前)Vimプラグインのスクリプトファイルからヘルプファイルを生成するというのをやりました。 Vimプラグインのヘルプドキュメントを自動生成する - cafegale しかしGitHubではREADME.md…

throw "ERROR"のチェックの簡潔な記述

vim

t9md: if Check1() throw "ERROR" endifこういうチェックをいっぱいやる場合に Check1() && throw "ERROR" Check2() && throw "ERROR" をやりたんですが、出来ない。 http://lingr.com/room/vim/archives/2013/11/03#message-17268337 manga_osyo: function!…

isは型の違いも見る

vim

manga_osyo echo 0 ==# "homu" => 1 になってつらぽよ… http://lingr.com/room/vim/archives/2013/11/03#message-17267099 Lindan リストで包んで,[0] ==# ["homu"] ならちゃんと型チェックされます(バッドノウハウ) http://lingr.com/room/vim/archives/…

ウィンドウを分割させて新しいバッファを表示させる系のコマンドを含む関数内での:echoは一瞬だけしか表示されない

vim

WarningMsgを表示させてから新窓で開こうとしたら、新窓が開かれた後の画面更新でechoが消されてしまった。関数内で、順番を、[新窓を開く→:echo]の順にしても無駄。関数が終了して初めて画面更新が行われるので、それで:echoが消されてしまう。 しょうがな…

複数ハイライトサーチ系Vimプラグイン

vim

daisuzu/rainbowcyclone.vim t9md/vim-quickhl MultipleSearch - Highlight multiple searches at the same time, each with a different color. : vim online MultipleSearchは操作性的に論外

ctrlp.vimの拡張作成は想像以上に自由がなかった

vim

実際拡張を作ろうとすると、想像以上に自由がないことが分かる。 複数選択が出来ない(標準プラグインでは出来るのに) 入力パターンマッチの種類が少ない(前方一致が欲しい) ページ送り・戻し機能がないから画面にない候補を選択することが出来ない(何と…

副作用の少ないYankRing.vimみたいなのができました

vim

Vimmerにハロウィンがアドベントしましたね。 Vim Advent Calendar 2012 335日目の記事です。 Vimのレジスタの履歴を取って再利用するプラグインにYankRing.vimというものがあります。間違えてp(テキストを貼り付け)してしまっても<C-p>で即座に履歴を遡(さか</c-p>…

ユーザに入力をさせるinput()のインターフェイスが不満すぎて仕方がないならctrlp.vim風の入力インターフェイスalti.vimを使おう

vim

Vim Advent Calendar 2012 333日目の記事です。alti.vimはctrlp.vim風の操作感を持つ入力インターフェイスです。 LeafCage/alti.vim もしもユーザに多少複雑めの入力を要求したい場合は、Vimの組み込み関数input()でそれを実現するのが苦しいことがあります…

俺が見たいのはメッセージの最後なんだ!:messagesを便利にするVimプラグイン

vim

Vim Advent Calendar 2012 330日目の記事です。Vimでエラーが発生した時にメッセージが表示されます。 そのメッセージを後から確認したい場合は:messagesでメッセージ履歴を表示します。 しかし:messagesにはVimが起動してからのメッセージが蓄積されている…

lightline.vimをカスタマイズする

vim

Vim Advent Calendar 2012 の325日目の記事です。 少し長めになりますので、お時間があるときにお読みください。Vimのステータスラインを改造するプラグインが、powerline、airlineに続いてlightlineが登場しました。 私は今までステータスラインやタブライ…

ctrlp.vimの拡張を作るときにVim7.3.1170以前ではスクリプトローカル関数をFuncrefで渡すことが出来ない

vim

こういうのは無理。 スクリプトローカル関数のFuncrefはそのスクリプト内でのみしか有効でないから。 let s:ctrlp_ext_var let s:ctrlp_ext_var.accept = function('s:accept') グローバル関数や、オートロード関数を使おう。もしかしたらこういうことをした…

将来使うかも知れないVimの正規表現

vim

コマンドの引数を空白で分割(ただし「\」でエスケープされている空白を考慮) for arg in split(a:args, '\%(\\\@

ctrlp.vimのExtensionを書くときに:NeoBundleLazy autoloadを考慮してg:ctrlp_builtinsをそのまま使わない

vim

ctrlp拡張を作ったら、最後にctrlpからid番号を取得してctrlpに登録することになるが、 このとき、ctrlpがNeoBundleLazy状態であるのなら、 command! CtrlPExtension call ctrlp#init(ctrlp#{extension-name}#id()) let s:id = g:ctrlp_builtins + len(g:ctr…

ctrlp.vim起動時にステータスラインをlightline.vimのものに上書きされるのを防ぐ方法

vim

以下のautocmdをvimrcに定義しておくと、lightline.vimがctrlp.vimのステータスラインを上書きするのを防ぐことが出来ます。 autocmd CursorMoved ControlP let w:lightline = 0 [注意] このautocmdはplugin/lightline.vimが読まれるより先に定義されていな…

GVimのハイライトで使える色名を色見本付きで一覧するunite-source-gvimrgb

vim

この記事は Vim Advent Calendar 2012 299日目の記事です。GVimで:highlightコマンドのguifg=guibg=引数に渡すことが出来る色名を一覧するunite-sourceを作りました。 $VIMRUNTIMEディレクトリの、rgb.txtの中にある色名リストを元にしています。:h rgb.txt …

半自動でNeoBundleLazy autoloadの設定をするプラグイン作りました

vim

この記事は Vim Advent Calendar 2012 286日目の記事です。:NeoBundleLazy に autoload機能が搭載されたのは、このAdventCalendarが始まって間もなくのことでした。 「立て!立つんだビムー!」 - sorry, unimplemented neobundle.vim の遅延処理で Vim の起…

Gitの更なるまとめ(書きかけ)

git

関連エントリ Gitコマンドのまとめ - LeafCage備忘録 初期化 SN cmd 説明/引数例 init cl clone {src_repository} [{dst_path}] https://example.com/path/to/repo.git/ path/to/dir addからcommitまで addの反対がreset SN cmd 説明/引数例 a add {file/dir…

vim処理速度調査(オートロード関数読み込み編2)

vim

vim処理速度調査(オートロード関数読み込み編) - LeafCage備忘録 ※この記事は全面的に誤っていたので修正されました。 そして、修正後の結果は極めて当然の話なので情報的価値がないです。ふとruntimeを用いてスクリプトを読み込む場合と、autoload関数呼…

vim処理速度調査(オートロード関数読み込み編)

vim

続編→vim処理速度調査(オートロード関数読み込み編2) - LeafCage備忘録 以下の内容が書かれたファイルをautoload/speed1.vimとして置く。 function! speed1#nop() endfunction 同様に、autoload/speed1.vim、autoload/speed2.vim、...としてautoload/speed…

vim処理速度調査(関数呼び出しin オートロード変数)

vim

オートロード変数(型は辞書)の中身の関数を、変数未定義の状態でcallするとオートロードしない · Issue #460 · vim-jp/issues この問題はそれとして、現行の回避策として、以下の4通りの方法がある。 eval()で評価 type()で評価 :silent letで呼び出し :si…

コマンドラインコマンドの範囲指定1,$は%に等しい

vim