cafegale(LeafCage備忘録)

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

vim

バックスラッシュでエスケープされていないスペースを表す正規表現

vim

いい加減どこに書いたのか忘れてその度に考えて作り直すのが面倒くさいのでメモ。 let list = split(str, '\%(\%(\%([^\\]\|^\)\%(\\\\\)*\)\@<=\\\)\@

保存の度に指定ディレクトリにバックアップを残すプラグイン autobackup.vim を作りました。

vim

autobackup.vim はありていに言うと効率化された savevers.vim です。 私の愛用していたプラグインに savevers.vim というのがありました。ファイルを更新する度に更新前のバージョンを通し番号を付けてバックアップしてくれる奴です。 ただ、このプラグイン…

オプション 'wildmode' をしばらく longest:list,full にしていたが、full に戻した

vim

シェルの補完に合わせて、Vim でも補完に複数の候補があったら、共通部分まで補完して候補を一覧するように設定を変更したが、補完候補がかなりたくさんある場合、画面がスクロールするあげく、スクロールさせすぎて意図せずスペースが入力されてしまう事故…

プラグイン indentLine が concealoption の値を変えてしまう! helpバッファでは無効にしたい

vim

Vim のヘルプファイル編集時になぜか conceallevel が変更されていて気になったので調べたら、先日導入した Yggdroot/indentLine のせいだった。 このプラグインはインデントレベルを表示してくれるのだが、その代償として conceallevel を変更してしまうよ…

いったんkeymappingでを定義することで feedkeys() の副作用を最小にする

vim

incsearch.vimに限らずだったんですが,どうしてもfeedkeys()を使わないと実装できないからfeedkeys()を使うんだけど特定の条件のときにインサートモードやコマンドラインモード時にfeedkeys()の処理が実行されて意図しない文字列がインサートされちゃう問題…

QuickFix を使いやすくするプラグイン作りました

vim

unite.vim や ctrlp.vim なんてなくても Vim には標準で、ある処理の結果を一覧してくれる機能があります。 それが QuickFixコマンド と QucikFixウィンドウ (& ロケーションリストウィンドウ) です。 しかし QuickFix の操作方法はわかりにくく使いづらい。…

Vimのマークをハイライトするプラグイン作りました

vim

久しぶりの投稿です。 なんか AdventCalendar に取っておこうと思ったら、いざそのときになると記事を書くのが怠くなってやらないパターンが多いので、 やはりこういう記事は公開した直後に書くのが一番なんだろうなって分かりました。 Vimのヘルプに A mark…

filetype を設定できるプラグインは実際にはバッファ毎に設定するように設計すると柔軟性が増す

vim

そう言えば、これから話すのは完全に私の好みの話なのでスルーしてもらっていいのですが、 この手のプラグインの場合、私は内部的には filetype 毎の設定というのは作らないで、バッファ毎の設定というのを作るような設計にすることが多いです で、filetype …

キーマッピングがされていないときにのみデフォルトキーマッピングをするときはsilent! map

vim

http://lingr.com/room/vim/archives/2014/12/02#message-20749443 は同じマッピングが既に定義されていたときには失敗するが、エラーメッセージを吐くので黙らせておく。 maparg()でマッピングの存在を調べて、定義されていなかったときのみマッピングする…

公開後から随分経ってわかったalti.vimの問題点

vim

長い候補を入力するとプロンプト文字列が長くなってしまう コマンドライン系ツールの宿命と言うべき問題。長いパスを入力したら当然入力された文字列は長くなり、見た目も不格好になり、扱いも複雑になる。 長いファイルパスならともかく、ユーザが自由入力…

alti.vim のアイデンティティを作者である私が失いかけたので整理しておく

vim

alti.vim は ctrlp.vim を参考にして作られたため、インターフェイスは ctrlp.vim に似ている。ctrlp.vim は複数の選択肢の中から1つを選んで開くためのインターフェイスであり、ファイルやバッファを絞り込んで開くという使い方をされる。この系統のプラグ…

setglobalの話

vim

thinca たしかに、それを考慮すると、setglobal 使った方がいいですね :help :setglobalバッファ/ウィンドウについてローカルなオプションに対して: コマンド グローバルな値 ローカルな値 ~ :set オプション=値 設定される 設定される :setlocal オプショ…

Vimが参照渡しをするのはリストと辞書だけ。長い文字列はリストに入れて渡す。

vim

kamichidu: vimの文字列って、代入時にコピーされましたっけthinca: されます let や引数に渡す際にもコピーされます 苦しみのテクニックとして、巨大な文字列は配列に入れる、というのがありますkamichidu: 参照がコピーされるのは、関数参照と辞書、リスト…

よじれた実験:コマンド補完関数の中でコマンド補完関数を呼ぶ

vim

コマンド補完関数の中でfeedkeys()が使えることが分かった。 ただし、feedkeys()のキー入力が開始されるのは補完が始まった後。 feedkeys()のキー入力によって補完は終了してしまう。ただし、オプション 'wildcharm' の値を変更することで feedkeys()から補…

try catch はreturn文の中では機能しない

vim

これはNG (catchできない) try return has_key(s:, 'disable_str2vimkeybind') ? a:str : lim#str2vimkeybind#str2vimkeybind(a:str) catch /E117:/ let s:disable_str2vimkeybind = 1 return a:str endtry これならOK (catchできる) try let ret = has_…

俺が破壊的変更をしない大人しい奴だと思ってたか?甘いぜ!

vim

拙作Vimプラグインの破壊的な変更を行いました。 LeafCage/foldCC.vim autoload/ を全て廃して plugin/ だけにしました。 そしてリポジトリ名を変更しました(foldCC → foldCC.vim) .vimが付きました。 LeafCage/yankround.vim ヒストリファイルを作るディ…

実践Vimを読んだ

vim

第1部 モード ほとんど復習だった。普段あまり使っていないコマンドラインモードについて以外は。 第2部 ファイル バッファリストを利用するというのはよい着想だ。 第3部 スピードアップ マークはほとんど利用していないのは何とかしたい。 第4部 レジ…

yankround.vim をビジュアルモードにも対応させました

vim

ヴィジュアルモードでもyankroundを使いたい · Issue #10 · LeafCage/yankround.vim xmap p <Plug>(yankround-p) xmap gp <Plug>(yankround-gp) 以上のようなマッピングを定義することで、ビジュアルモードでの p でビジュアル選択している部分と、レジスタの内容を置き</plug></plug>…

オペレータにはテキストオブジェクトだけでなく:コマンドも渡せる

vim

clever-f.vim 読書会にて thinca > > .のリピート対応 > 僕も分かっていないので,thinca さんに教えてもらえるとうれしい. えーと、これはthinca この場合の repeat ってのはそもそも motion のリピートで dfx とかしたときに . するとまた dfx みたいな動…

Vimの関数がどのバージョンで追加されたのか調べる

vim

itchyny 関数がどのパッチで追加されたかってみんなどうやって調べてるんだろう. http://lingr.com/room/vim/archives/2014/01/10#message-18034846 manga_osyo わたしは version7.3 とかから 探してきているなー :help version7.3 http://lingr.com/room/vi…

statusline系プラグイン第4の刺客 vim-ezbar

vim

この記事はVim Advent Calendar 2013 40日目の記事です。 statuslineをモダンに改造するプラグインの系譜 Lokaltog/vim-powerline / Lokaltog/powerline bling/vim-airline itchyny/lightline.vim そして第4の刺客として、t9md/vim-ezbar が登場しました。 …

uniteの標準actionで利用できるcandidateのaction__{name}要素

vim

@Linda_pp @kaoriya ワーイ。あと action__codic_word ではなくて action__text に設定すれば insert_codic_word ではなくて unite.vim のinsert アクションがそのまま流用できると思います。 https://twitter.com/osyo_memo/status/419499833653608448 uniteの…

yankround.vimがunite.vimでの履歴の閲覧に対応しました。

vim

LeafCage/yankround.vim :Unite yankround これでShougo/unite.vimでレジスタの履歴を閲覧できます。 出来ることはunite-source-history/yankとほぼ同じです。(参考にさせていただきました。Shougoさんありがとうございます。) kien/ctrlp.vimと比較すると…

yankround.vimにリージョンハイライト機能が付きました

vim

LeafCage/yankround.vim let g:yankround_use_region_hl = 1 で有効になります。*1 有効にするとyankroundが有効な間、貼り付けたテキストがハイライトされるようになります。 <C-p> <C-n> で回したテキストもです。 g:yankround_region_hl_groupname でハイライトに使</c-n></c-p>…

Vimの:highlight定義の流儀

vim

colorschemeが先頭で:hl clearをしてくるので、カラースキーム以前に定義された:highlightは軒並み吹っ飛ばされるという問題。 結論を言うと、:highlightの定義はautocmd ColorScheme *でするか、使う直前その場でやるべき。 hl clear つけるのが流儀という…

複数ウィンドウを開いているときneosnippetのスニペットを発動させると他のウィンドウのfoldingが閉じてしまう現象

vim

一番最後のウィンドウで発動させるとこの現象は発生しない。 自分のウィンドウよりも後のウィンドウにのみ発生する模様。

些末なるVim scriptのTips

vim

実際に使った、役に立ったもの あるechoの表示で一時停止させてユーザに確認を促したい echo の直後で call getchar() する インプットメソッドを強制的にオフにしたい 'imdisable'で一時的にIMをオフにする。 let save_imd = &imd set imdisable let &imd =…

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 とのことなので、それまでは我慢と工夫で乗り切るしかないの…