拝むと Vim プラグインを書いてくれるかも!! (実在の Vim 使いとは一切関係が)
![どうぶつの森で Vim 使いを飼おう!! - 地獄のネコブログ](https://cdn-ak-scissors.b.st-hatena.com/image/square/8c18a044c62793342032bd1af552dbba35a8ba86/height=288;version=1;width=512/http%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fn%2Fnokturnalmortum%2F20121125%2F20121125215722.jpg)
Vim で一定時間ごとに処理を呼びたい場合があると思います。 通常は autocmd に CursorHold や CursorHoldI に設定をすればいいのですが、この設定ではキー入力がない場合に続けてイベントが発生しません。 (一度 CursorHold が呼ばれてからキー入力がない場合は CursorHold が呼ばれない。 quickrun.vim や unite.vim だとどうやって解決しているのかなーと思ってソースを見てみたら 処理が終わった後に feedkeys を呼べばいいみたいです。 と、いうことでこんな感じ。 [ソース] " 1秒毎に "homuN" を出力する set updatetime=1000 let s:count = 0 function! s:test() echom "homu".s:count let s:count += 1 call feedk
この記事は Vim Advent Calendar 2011 の 28 日目の代打です。 急遽代打をやることになった*1けどネタが浮かばなかったので、適当に vimrc の中から便利かもしれない関数を晒すことにします。 スクリプトローカルな関数を呼び出したい Vim script を書いてると、スクリプトローカルな関数をコマンドラインモードから直接呼び出して挙動を確認したくなること、ないですか? デバッグで呼び出したい 既存プラグインを拡張したくなった 中身覗くの大好き なんか知らんけど急に呼び出したくなった まあそれなりにシチュエーションはあるかと思います。あることにします。 Vim script ではがんばればスクリプトローカルな関数を呼び出せますが、正直いちいちがんばりたくないです。 スクリプトローカルな関数を呼び出す関数 私の vimrc から抜粋した以下の関数を vimrc に書
こんにちは。Vim Advent Calendar 2011 25日目の@plasterです。Vimって素敵なエディタですよね。 今日の記事のネタのメモをどこに保存していたか忘れてlocateとfindとgrepを重ねた挙句、 Vim起動して[CTRL-O]ですぐ見つかりました。知らなかったひとは今すぐ:h CTRL-Oしましょう。 エディタは生産性の源だと思います。 さて今日は、その生産性を効率的にむだづかいする方法の紹介です。いいんです、実用性などに縛られないからこその愛なのです。目指せ極北! というわけで、かんたんなアスキーアート生成と、数列の生成と、迷路ソルバやります。全部キーボードマクロで。 フィボなっち まずはアスキーアートの生成から。見出しの「フィボなっち」というのは (●´ー`●) (●´ー`●) (●´ー`●)(●´ー`●) (●´ー`●)(●´ー`●)(●´ー`●) (
気がついたら結構本格的になってしまっていたのでいっそのことプラグイン化してようかと。 まぁ使い道があるのかわからないけども。 だいたいやりたいことはできた。 ちなみにプラグイン名はでちまるさんに考えてもらいました。 [プラグイン] vim-reti - github [簡単な使い方] " 式を渡して、それを評価する関数の参照を返す let s:Func = reti#lambda("1 + 2") echo s:Func() " => 3 " 引数を評価する場合は a:{n} を使用する let s:Plus = reti#lambda("a:1 + 2") echo s:Plus(1) " => 3 " 二項演算子を受け取った場合はそれを評価する関数を返す let s:Minus = reti#lambda("-") echo s:Minus(3, 2) " => 1 [二項演算子を関数
っぽいことを使いやすく定義してみました。 まぁ Assert といっても処理が中断するわけではないのですが。 [使い方] function! s:plus(a, b) return a:a + a:b endfunction function! g:minus(a, b) return a:a - a:b endfunction function! s:test() let n = 10 let m = 7 " 基本的な使い方 call g:assert(1) " => OK : call g:assert(0) " => Assert : " 偽の時のメッセージを指定 call g:assert_msg(s:plus(1, 3) == 5, "g:plus(1, 3) == 5") " => Assert : g:plus(1, 3) == 5 " 文字列で式を渡せば、そのまま式がメッセ
次回予告 第605回 日時: 2024/02/10 (土) 23:00 場所: Gitter (Matrix #vim-jp_reading-vimrc:gitter.im) vimrc: garchomp-game さん (後編) init.lua lua/config/command.lua lua/config/init.lua lua/config/mappings.lua lua/config/option.lua lua/plugins/Comment.lua lua/plugins/actions-preview.lua lua/plugins/aerial.lua lua/plugins/codeium.lua lua/plugins/diffview.lua lua/plugins/lsp/lua_ls.lua lua/plugins/lua-guide-ja.lua l
こんにちは。Shougoです。最近、またブログをさぼり気味ですが、今回は比較的大きな変更があったので ブログにまとめておこうと思います。 本日、neocomplcache-snppets-complete は neosnippet にリネームされました。 https://github.com/Shougo/neosnippet それに伴ない、旧 neocomplcache-snippets-complete は一部仕様を変更した上で残されました。 https://github.com/Shougo/neocomplcache-snippets-complete まだ使用することはできますが、起動時にメッセージが表示されます。 リネームの理由: さて、皆さんが気になるのは、「なぜリネームしたか」ということでしょうから簡単に説明しておきます。 一番大きな理由としては、neocomplcache
2009/06/26 追記: id:ka-nacht さんのアドバイスを受けて名称を変更しました。変えるなら早いうちに、と言うことで。 普通の人はまず必要ないだろう prettyprint.vim と言うプラグインを作った。 http://github.com/thinca/vim-prettyprint/tree/master prettyprint.vim とは Vim の変数を整形して出力するためのプラグインです。 見た方が早い 例えば QuickRun.vim をインストールしているときに*1、 PP g:QuickRunConfig などとすると、 { '*': { 'exec': '%c %s %a', 'output_encode': '&fenc:&enc', 'shebang': 1, 'split': '{winwidth(0) * 2 < winheight(0) *
問題 Vim の矩形選択 は便利です。痒いところに手が届く感じの便利さです。 例えば以下のようなコードを編集していて、 一時的に真ん中のブロックをコメントアウトして無効化したくなったとしましょう。 やり方は色々あります。 対象が1行だけなら I# <Esc> で十分です。複数行あるなら最初の行を I# <Esc> でコメントアウトした後に j. を繰り返していけば良いですね。数が多くて j. の連打が難しい場合は vip で選択して :s/^/# /<Enter> という手もあるでしょう。 これ以外に矩形選択を使う方法もあります。 <C-v> で矩形選択を開始し、j 等を連打して適当な範囲を選択し、I# <Esc> こうすれば選択範囲の各行の頭にまとめてコメント文字を入力することが出来ます。 しかし、現実には「 j 等を連打する」といった優雅さに欠ける操作はしません。 ブロック単位でテキス
« git でバイナリを気軽に扱える、git-largefile の dropbox 版を作った。 | Main | gcc は副作用のある関数呼び出しを含む式評価順序を最適化する。 » vimに起動プロファイラが実装された。 Patch 7.2.269 Patch 7.2.269 Problem: Many people struggle to find out why Vim startup is slow. Solution: Add the --startuptime command line flag. Files: runtime/doc/starting.txt, src/globals.h, src/feature.h, src/main.c, src/macros.h http://groups.google.co.jp/group/vim_dev/b
問題 Vim には 'cursorline' というオプションがある。これを有効にすると、現在カーソルがある行がハイライト表示される。カーソルの位置を見失いにくくなるので便利なオプションだ。 しかし、デメリットがないわけではない。 微妙に重い。 背景色や一部の色が上書きされるので、カーソルのある行の背景色が見えなくなる。例えば、コメント内の TODO や 'list' で表示される文字など。 そもそも 'cursorline' は常に必要だろうか。編集中にカーソルを見失うことはそうそうないはず。見失うのはちょっと席を外したり別の作業に移って、戻ってきた時だ。必要な時だけ有効にすることはできないだろうか。 解決方法 以下のような設定を行うと、しばらく手を離した時だけ 'cursorline' が有効になる。 augroup vimrc-auto-cursorline autocmd! aut
以前から、CSVを一気にtableに出来たらいいなーと思ってたので実装してみた。 例えば以下の様なカンマ区切りのデータ行をビジュアル選択して tokuhirom, geek, perl kazuho, geek, jsx hasegawayosuke, xss, javascript <c-y>, をタイプし、以下のクエリを入れる | はフィルタを開始する識別で、/というフィルタに続いて,\s*という分割する為の正規表現パラメータを渡す。フィルタは元々カンマで複数指定が可能なので、\,という風に誤爆しないようにエスケープしてる。 Tag: table>tr*>td|/\,\s* するとこうなる。 <table> <tr> <td>tokuhirom</td> <td>geek</td> <td>perl</td> </tr> <tr> <td>kazuho</td> <td>geek</t
最近 zencoding.vim を大きく修正しました。とは言ってもこれまで単体テストを作ってきた事もあって、過去の動作を(なるべく)壊さずに大規模な修正が行えました。 これまでは一つのファイルに html, css, haml の処理が全て記述されていたのでとてもスパゲッティなコードになっていて、もう少し放っておくとカオスな状態になりかけていたので、ファイルを分割しインタフェースを揃える事にしました。 これにより、今後新しいフォーマットに対応する際にも、zencoding/lang にあるファイルの真似をして記述すれば実装出来る様になります。 haml に対応した 「えっ?前から対応してたんじゃないの?」と言われる方もいるかもしれませんが、これはあくまで expand abbreviation の haml フィルタとしてだけサポートしていました。 何が変わったかというと zen cod
コーディングする際、構文やキーワードが色付けされる事はプログラマに大きなアドバンテージを生みます。 先日、vim の開発者メーリングリスト vim-dev に「syntax/cpp.vim に C++0x のサポートを追加して欲しい」との意見が投稿されました。 vim の作者 Bram Moolenaar 氏は「ここ10年程、syntax/cpp.vim のメンテナと連絡が取れていない。」と漏らしました。 そこで以前から、syntax/cpp.vim に手を入れようと議論していた vim-jp がメンテナを買って出る事にしました。 https://github.com/vim-jp/cpp-vim Bram Moolenaar 氏からも快い返事を頂きました。今後は C++ のノウハウを持った日本の vim ユーザー皆さんからのご意見を頂戴しながら syntax/cpp.vim のメンテナン
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く