読者です 読者をやめる 読者になる 読者になる

Vim

QuickBuf を入れた

Vim

QuickBuf を入れました。以前は fuf.vim やproject.vim を使っていましたがなんだかんだで最近は :ls で一覧表示してバッファ番号で選択していました。 vim.org のスクリプトファイルを wget でダウンロードする vim.org から wget でスクリプトファイルをダ…

Vim 7.3 をソースからインストール

Vim

Vim 7.3 をソースからインストールする手順。 $ sudo yum install ncurses-devel $ wget http://ftp.vim.org/pub/vim/unix/vim-7.3.tar.bz2 $ tar xjvf vim-7.3.tar.bz2 $ cd vim73 $ mkdir patches $ cd patches/ $ curl -O 'http://ftp.vim.org/pub/vim/pa…

カーソル下の単語を snake_case や camelCase などに変換する Vim プラグインを書きました

Vim

カーソル下の単語を snake_case や camelCase などに順次変換する Vim プラグインを書きました。 実行例 例えば getElementById という単語の上にカーソルがある状態で :call ToggleCase() を実行すると下記の順に記法が切り替わります。 GetElementById get…

JSDoc 形式のコメントを追記する Vim スクリプトを書きました

JavaScript の関数に JSDoc 形式のコメントを追加する Vim スクリプトを書きました。 tanabe/WriteJSDocComment.vim - GitHub 実行例 JavaScript の function が書かれている行にカーソルがある状態で :call WriteJSDocComment() を実行すると下記スクリーン…

jslint.vim を入れた

CentOS に jslint.vim を入れました。コーディング中にリアルタイムで文法チェックをしてくれます。それほど重くもないですし便利です。 インストール JavaScript のインタプリタ (SpiderMonkey、Rhino、node.js) が必要なのでインストールはそこから。CentO…

Vim で「■」や「●」を正しく表示させる

Vim

ターミナルの Vim で「■」や「●」といった記号を入力すると、記号が半分になったりカーソル移動ができなくなったりと色々面倒な現象が起こります。これを解決するには .vimrc に以下を記述します。 if exists('&ambiwidth') set ambiwidth=double endif ambi…

neocomplcache 導入時に ActionScript の補完がすべて小文字になってしまう

actionscript.vim と neocomplcache を同時に導入すると、キーワード補完が全て小文字になる不具合が発生します。 これは actionscript.vim 内に書かれている、 syn case ignore この一文が問題のようです (neocomplcache の Wiki より)。 使いづらいので修…

モードラインでファイル毎に Vim の設定を記述する

Vim

モードラインを使用すると、個別のファイルごとに Vim の設定を書くことができます。 例えば、拡張子は .html でも中身は PHP スクリプトという場合、ファイルを開く度に :se fenc=php と入力せずに済みます。 モードラインの書き方 行頭か行末にそのファイ…

pathogen.vim を導入しました

Vim

pathogen.vim を導入しました。 ごちゃっとしていた plugin ディレクトリがかなりスッキリしました。読み方はパソゲン? インストール方法 pathogen.vim をダウンロードします。 $HOME/vimfiles/autoload (Mac/Linux は vimfiles → .vim) に pathogen.vim を…

複数行に入力した数字の合計を求めたい

Vim

問題 コピペしてきた幾つかの数字の合計を求めたい。 解決方法 Excel を使う。 …では面白くないので、折角だから Vim で。 Perl のインタフェースを使って泥臭く書いてみました。 :perl $a=0;for($i=1;$i<=$curbuf->Count();$i++){$a+=$curbuf->Get($i)};VIM…

Vim で一行が長すぎる HTML や XML を編集すると重くなる

Vim

Vim で一行が長すぎる (約3000 文字以上) の XML や HTML を開くとカーソルの移動が重くて使い物になりません。シンタックスハイライトが原因のようです。 解決方法 幾つか方法がありますが、ファイルを書き換えてもよいのならば 2 番目が妥当だと思います。…

全ての行を削除する

Vim

全ての行を削除するときは :%d 上記のコマンドを入力していましたが、 gg d Shift-G こちらの方が左手だけで完結するのでよさげ。

よしなにインデントのスタイルを切換える VimScript を書いた

Vim

開いたファイルによってよしなにインデントのスタイル (タブ or スペース) を切り替える VimScript を書きました。職場ではプロジェクトによってインデントのスタイルが異なったりするので、個人的には重宝しています。 ソースコード tanabe's AutoSetIndent…

Vim script で数当てゲームを作った

Vim

Vim script の勉強ということで、数当てゲームを作ってみた。プラグイン作成までの道のりは長い…。 let n = 9 let temp = matchend(reltimestr(reltime()), '\d\+\.') + 1 let b:answer = reltimestr(reltime())[temp : ] % (n + 1) function! WaitUserInput…

現在編集しているファイルのディレクトリに移動するキーマッピング

Vim

現在編集しているファイルのディレクトリに移動するキーマッピングを設定した。 nnoremap e :Explore

Event クラス用のテンプレートを作った

.as のテンプレート周りをさらに改良。XxxEvent.as のように Event.as で終わるファイル名ならば Event クラス用のテンプレートを読むようにした。 gvimrc au BufRead,BufNewFile *.as call LoadASTemplate() function! LoadASTemplate() if (line("$") == 1…

新規 .as ファイル作成時のテンプレート読み込みを改良した

以前設定した、テンプレートを適用する設定を強化して、クラス名 = ファイル名になるようにした。 gvimrc au BufRead,BufNewFile *.as call LoadASTemplate() function! LoadASTemplate() if (line("$") == 1) && (match(getline(1), "^$") == 0) "Windows 0…

XML/HTML を扱うテキストオブジェクト

Vim

XML/HTML コーディングに便利なテキストオブジェクト it/at を知った。 例えば <p>hogehoge</p> の hogehoge を削除したい場合は dit で。

textobj-indent を入れた

Vim

textobj-indent を入れた。 function hoge():void { if (true) { foo(); bar(); } } カーソルが if の行にある時に vai と入力すると if 文のブロックが選択される。vi{ より入力しやすい。 インストール方法 textobj-user を入れる textobj-indent を入れる…

属性にスペースと全角丸カッコを入れると ii や jj に変換される

Vim

Vim で HTML を編集していて、タグの属性に「半角スペース + 全角丸カッコ」を入れたら ii や jj に変換されてしまう。 <img alt=" (" /> と入力したのに <img alt=" ii" /> となる…。どのプラグインが原因なのだろう。 追記 半角スペースではなくとも、「全角開き丸カッコ + 半角英数字二文字…

新規 .as ファイルを作成時にテンプレートを読み込むようにした

空の .as ファイルを開いたときにテンプレートを読み込むようにした。 :he skeleton :he au を参考。 Vim スクリプト au BufRead,BufNewFile *.as call LoadASTemplate() function! LoadASTemplate() if (line("$") == 1) && (match(getline(1), "^$") == 0)…

Vim から FlashDevelop のパブリッシュを実行する

Vim で F5 を押したときに FlashDevelop でパブリッシュが実行されるようにした。 autocmd Filetype actionscript nnoremap <buffer> <F5> :!start "wscript.exe" "C:/path/to/publish.js"<CR> publish.js var oShell = WScript.CreateObject("WScript.Shell"); oShell.AppAc</cr></f5></buffer>…

辞書ファイルを更新した

ActionScript 辞書をアップデート。既存のものに Gumbo の Language Reference のインデックスをマージした。 ActionScript 1/2/3 用の辞書ファイル

検索にマッチしたテキストを取り出す

検索にマッチしたテキストを取り出す (= マッチしなかったテキストを削除) する Vim 的なやりかたがわからなかったので rubydo で。 rubydo VIM::Buffer[1].append(VIM::Buffer[1].count, $_.scan(/regex/).join(" "))

img や br タグを閉じる

Vim

img や br タグを閉じる正規表現メモ。 :%s@\(<img[^>]\+[^/]\)\(>\)@\1 />@g :%s@\(<input[^>]\+[^/]\)\(>\)@\1 />@g :%s@<br>@<br />@g</input[^></img[^>

vimrc を即座に開く

Vim

vimrc/gvimrc を即座に開く (元ネタ)。 :e $MYVIMRC :e $MYGVIMRC

smartchr を入れた

Vim

smartchr を入れた。元ネタと同じ設定をしてみた。 autocmd FileType actionscript,javascript inoremap <buffer> <expr> = smartchr#one_of(' = ', ' == ', ' === ', '=') 例えば function hoge() { var foo } foo の直後に = を入力すると function hoge() { var foo= } </expr></buffer>…

バッファ内検索のマッチ数を調べる

Vim

バッファ内検索のマッチ数を調べる方法。 :%s/pattern//n

HTML タグのペアにジャンプする

Vim

xml.vim を入れた。HTML タグのジャンプをするのが目的。 タグにカーソルを移動して \5 でジャンプできる。ただし、ネストが複雑だと少し時間がかかる。

パブリッシュ時にブラウザをリロードする

Vim で .as ファイルを保存時に、Flash をパブリッシュしつつブラウザをリロードするようにしてみた。元ネタは ||_koba_|| さんの発言。ちなみに Windows 限定。 手順 JSFL FileSystem API を入れる ブラウザをリロードする JScript を書く JScript を実行す…

タイムラインを Vim のキーバインドで移動する

タイムラインを Vim (Vi) のキーバインドで移動できるように設定した。Ctrl/Cmd-Shift-HJKL で選択状態のフレームが移動する。どのキーを押しているかが伝わらないデモ。 キーそれぞれに別々の JSFL コマンドを割り当てるのが面倒。関数呼び出しができたら楽…

mru.vim を入れた

Vim

mru.vim を入れた。最近開いたファイル (Most Recently Used) リストを表示できる。 :MRU Vim のデフォルト機能であったと思ったが、気のせいか。

コメントブロックを挿入する Vim スクリプトを書いた

ActionScript のコードにコメントブロックを挿入する Vim スクリプトを書いた。カーソル位置に任意の文字ブロックを挿入するスマートな方法がよくわからず、泥臭い書き方になった。 function! ASCommentWriter() let c = col(".") let l = a:firstline - 1 l…

eregex.vim を入れた

Vim

eregex.vim を入れた。Vim の正規表現は鬼のようにエスケープが入るため、書いているうちに意味不明になりがちだが eregex.vim で問題解決しそう。 Vim だとこう書くのが、 :%s@\("hoge\/foo\/images\/\)\([^"/]\+\(gif\|jpg\)"\)@\1static/\2@g eregex.vim …

記録モードを使ってみた

Vim

記録モードを使って、テスト用の XML データを作ってみた。 <items> <item id="0"> <hoge>hoge0</hoge> <foo>foo0</foo> <bar>bar0</bar> </item> </items> このような XML の、item ノードを、数字をインクリメントしつつ増やすのが要件。 まず item ノードの先頭 (line 4) にカーソルを置き、 qavjjjjjy6jP^Aj0^Aj0^Aj0^Akkk0q10@a…

:earlier と :later の使いどころが不明

Vim

Vim 7 から実装された :earlier や :later は、凄い機能だと思うが実務で使ったことがない。しかし、「数分前に書いたあのメソッドをやっぱり使いたい」というシチュエーションはたまにある。そんなときは思い出して使ってみよう。「数分前」を特定できれば…

MacBook に Vim 7.1 を入れた

MacBook に Vim 7.1 を入れた。既に入っている Vim 7.0 のアンインストール方法がわからなかったので、port install を強行した。 $ sudo port install vim $ cd /usr/bin $ sudo rm vi vim vimdiff view $ sudo ln -s /opt/local/bin/vim ./vi $ sudo ln -s…

import しているファイルを開く

gf を ActionScript の import 文で使うための設定をした。 import com.example.bar.foo.Hoge; この一行の上で gf を押したら com/example/bar/foo/Hoge.as が読み込まれる。 ActionScript の文法は Java のそれに似ているので Java でそういった tips があ…

HTML のスペシャルキャラクタをエスケープする Vim スクリプトを書いた

Vim

HTML のスペシャルキャラクタをエスケープする Vim スクリプトを書いた。 :[range]call EscapeHTMLSpecialChars() として使う。 <p>hoge & foo</p> をエスケープすると &lt;p&gt;hoge &amp; foo&lt;/p&gt; となる。関数の内容は以下のとおり。初めて Vim スクリプト…

ターミナルの Vim にクリップボードの内容をペーストしたい

Vim

ターミナルの Vim にクリップボードのテキストをペーストするには、 :a! を入力して Alt + v などでペーストしてから <Esc> を押すか . を入力する (参考)。 ここで悩ましいのが :a と :a! の使い分けだが、ヘルプを見ると、 Adding [!] toggles 'autoindent' for</esc>…

編集中の Ruby スクリプトをその場で実行する

Vim で編集中の Ruby スクリプトを、即時実行できるように設定した。 Vim で Ruby スクリプトの実行と結果のプレビュー表示 Tip #1244: preview interpreter's output 上記サイトを参考に、.vimrc に追記。 function! Ruby_eval_vsplit() range let src = te…

ターミナルでは C-CR のマッピングが有効にならない

Vim

C-CR のマッピングは、ターミナルエミュレータ越しでは動かないらしい。少なくとも Poderosa では駄目だった。 nnoremap <C-CR> :echo "hoge"<CR></cr></c-cr>

CentOS 5 で Vim 7.1 をビルドする

CentOS 5 の Vim に autocomplpop.vim を入れたら、 Sorry, Autocomplpop doesn't support this version of Vim. と言われて使えなかった。autocomplpop.vim (2.3.1) の中身を見ると、対応バージョンが 7.1 と書いてある。vim.org の情報が間違っているよう…

カレントバッファのファイルパスを表示する

Vim

カレントバッファのファイルパスを表示する方法。意外に手間がかかる。 :!echo %:p または :echo expand("%:p")

任意の単語の数を調べる

Vim

vim で単語数や行数を数える方法が便利。 :%s/function/&/gn で、ファイル内に function がいくつあるか表示される。 キモは 置換フラグの n。これを指定すると置換は行われずにマッチの数を表示する。he :s で、 [n] Report the number of matches, do not …

ターミナルの Vim のテキストをクリップボードにコピーする

ターミナルの Vim に書いたテキストをクリップボードにコピーしたく、"vim・mac間でクリップボードを介してやり取りする方法 完結編" を参考にやってみた。 nkf が入っていない nkf が入っていなかったので、MacPorts で入れようとしたら MacPorts も入って…

続・ActionScript の辞書ファイル

追記 : 2008.05.08 ↓下記のサイトに置いてある辞書ファイルの方が性能がよいので、本サイトはスルーしていただいて構いません。 AS3 の辞書ファイル - PBD - subtech 追記ここまで ここの actionscript.vim からキーワードを抜き出して辞書ファイルを作った…

最後に入力した箇所にカーソルを移動する

Vim

ノーマルモードで gi を入力すると、最後に入力していた箇所にカーソルが移動し、インサートモードになる。VIM for (PHP) Programmers より。 function hoge() { var foo = 100; } 100; を入力してからノーマルモードにし、バッファ内を徘徊したあと、gi で …

設定ファイルをユーザディレクトリに置く

Vim の設定ファイルやプラグインなどは、これまで Program Files/Vim の中身を書き換えていたが、ちゃんとユーザディレクトリを使うようにした。 :he vimfiles :he gvimrc :he vimrc を参考。 直接関係ないが、Windows のユーザディレクトリの Local Setting…

Windows/gVim の viminfo ファイルはどこにあるのか

Windows/gVim は viminfo を C:/Documents and Settings/<user>/ に作る。</user>