ラベル vim の投稿を表示しています。 すべての投稿を表示
ラベル vim の投稿を表示しています。 すべての投稿を表示

2009年3月18日水曜日

手軽に始めるVimperator入門

先日、「Vimperatorで始めるVim入門」という内容で「テキストエディタ勉強会」で話してきました。
軽く参加者の皆さんにアンケートを取ったのですが、予想以上にご存知の方が多く、また、よくわからないままにアンインストールした方が多かったです(笑)。

時間の都合上具体的なセットアップ方法等はお話しませんでしたので、今日は前回の復習も兼ねて、そこらへんからエントリを書いてみたいと思います(随分時間あいちゃってごめんなさい)。
  • インストール
  • 基本操作
  • 最低限あるとうれしいプラグイン
という感じで進めます。
あらかじめ、XUL/Migemoというローマ字で日本語を検索出来るプラグインをインストールしておいてください。プラグインとの連動で使用します。

インストール

https://addons.mozilla.org/ja/firefox/addon/4891
ここからインストールします。
これは大丈夫ですね。

さて、いきなりですが、インストール直後におまじないが必要です。
勉強会でもお話した通り、起動するといきなりアドレスバーなどがなくなってしまいます。
Vimperatorの設定ファイルである、.vimperatorrcというファイルを作成し、

MacOSX / Linux : 自分のHOMEディレクトリへ
Windows : C:¥Documents and Settings¥"ユーザー名"

です。
Windowsのケースは僕も試したわけではないので、詳しくは
Vimperatorの初期設定
をご覧下さい。

.vimperatorrcの中は、
set guioptions+=mTb
set wildoptions=auto
set complete=sl

と書いてくださいね。

基本操作

勉強会でお話した一通りのショートカットキーを列挙します。
ページ内移動は、

jklh: ↓↑→←
CTRL-d: 半ページダウン
CTRL-u: 半ページアップ
gg: ページ頭へ
G: ページ最後へ

リンクのクリックは、

fキーを押すと番号が表示されるので、その番号をタイプ
fキーを押してキーワード絞り込み(fとタイプ後、linkとタイプすると、linkと書かれているリンク先だけ絞り込まれる)

URLを開くときは、

oキーを押して文字を入力


Vimperatorの動きを一時的にオフにしたいとき(Livedoor ReaderやGmailのショートカットキーを使いたい時など)
CTRL-z(ESCで復帰)

これだけですね。
とりあえず意図しない動きになった時はESCキーを押してください。
# Vim使うようになるとESCキーは一番叩くキーになります。

これで一通りネットサーフィンは出来ると思います。

最低限あるとうれしいプラグイン

codereposに沢山のプラグインがあることをお話しました。
その中から特に便利なプラグインを紹介します。

ちなみにプラグインは、

MacOSX / Linux : HOMEディレクトリの.vimperator/pluginディレクトリの中
Windows : C:¥Documents and Settings¥"ユーザー名"¥vimperator¥pluginディレクトリの中

にそれぞれおきます。

migemo_hint.js

http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/tags/1.2pre/migemo_hint.js

これは非常に便利です。
fキーを押してキーワード絞り込み(fとタイプ後、linkとタイプすると、linkと書かれているリンク先だけ絞り込まれる)
これにローマ字入力による日本語リンクタイトルの絞り込みが可能になります。
先日の勉強会で参加者の関心が高かったプラグインです。

autoIgnoreKey.js

http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/tags/1.2pre/autoIgnoreKey.js

これは、GmailやLivedoor Readerなど、独自にショートカットキーが設定されているウェブサイト向けに、
自動でVimperatorをサスペンドしてくれるプラグインです。

とりあえず、プラグインの紹介はこの二つで。
ビュンビュン操作できるようになってくれば、快適そのものです!

おわり

今回のエントリ、いかがだったでしょうか。
キーボードによるブラウザの操作の楽しさを感じとってもらえると幸いです。

今回紹介したのは最低限の操作のみでした。
もっと知りたい場合は、:helpもしくは、vimfox.comさんの基本操作やチートシートが非常に参考になると思います。

Vimfox
Vimperatorの基本操作
Vimperator Cheat Sheet

これまでの使い方から変化を感じ、心地よさを覚えればあとは自分でどんどん突きつめていってください。

ちなみに僕はガッツリカスタマイズなんてしてなく、
非常にライトに使ってます。

2009年2月4日水曜日

テキストエディタ勉強会 - 第一回 開催!

codecheck.inのIRCにて「メインで使っていないエディタの魅力的なところとか聞きたいよね」という結構マジメな流れから、なんとテキストエディタ勉強会を開催することになりました。

テキストエディタ勉強会 - codecheck.in

僕も「Vimへ興味を持っているけどなにから始めたらよいのかわからない」人へ、入門的なところを話します。
詳細はリンク先を見てもらうとして場所と日時は、

2009/02/21 開始時間は未定
株式会社Fusic 福岡本社 大会議室(今回も会場提供して下さいました。感謝!)

です。

魅力的なところをかいつまんで紹介し、参加した人全員がハッピーになれればいいですね。

現在20分枠が1つ開いてます。
自分が使っているエディタを紹介したい方、是非お待ちしております。
もちろんどんなエディタでもOK!


追記:スピーカーの募集は終了しました

また、参加希望の方は、
テキストエディタ勉強会 - 第一回 - codecheckin | Google グループ

こちらのグループまで投稿してください。

お席既に残りわずかです。
お早めにどうぞ!

2009年1月30日金曜日

軽量端末urxvtの256色化とvim colorの設定

urxvt+独自ビルドvimという感じでサクサクとやっていたのですが、ふとurxvt(rxvt-unicode)って256色出さないよなと思い、調べてみると256色の表現力に圧倒されたのがきっかけです。

なんかいままで損してたみたいな気分です。笑

defaultcolor.png

違いは一目瞭然ですね。
ちなみに、Terminal.appだと、

Terminal.jpg

悲惨ですねw

さて、ここから一気にvimをカラフルにしたい衝動にかられ、urxvtリビルド体制に。

参考: ぼちぼち散歩 Macでurxvt + screen + zsh + vim環境を作ってみた

こちらの記事と同様にMacPortsのvariantsで設定出来るよう独自portsファイルを作成しました。

とりあえず既存のrxvt-unicodeのportファイル、

/opt/local/var/macports/sources/rsync.macports.org/release/ports/x11/rxvt-unicode/Portfile


からコピーしてきて、一番下に下記を追加します。

variant color256 description {Applying 256color patch} {
post-patch {
system "cd ${worksrcpath}"
system "patch -p1 < doc/urxvt-8.2-256color.patch"
system "patch -p1 < doc/wcwidth.patch"
}
}


これで、+color256がinstall時に指定できるようになるので、

$ sudo port -v install rxvt-unicode +color256


でインストールできます。

これで無事にカラフルな軽量端末が完成しました。

256color.png

しばらくつかってみて、少しでも描画が遅く感じるようなら、8色に戻すと思われますw

2008年10月1日水曜日

[tab2space]タブ文字をスペースに変換するとき、どうしてる?

SKK諦めて予測入力の出来るPrime使いはじめたcohtanです。

僕はコード書いているときに誰が見ても同じ見た目になることから、タブ文字をスペース4つ分に変換しています。
もちろんスペースキーを4回叩いているわけではなく、タブを押したら勝手にスペース4つ入るように設定しているだけです。

で、ここから本題。

ここにはいない他人が書いたコードにタブコードが入っている時にそれらをスペース4つに置き換えたい。
という状況が発生しました。
しかもここにはいない他人が書いているコードはたくさんあり、数百ファイルあります。

さぁどうするかと。
単純に、1つのタブコードに対して4つのスペースで置換したのでは見た目が変わってしまいます。
というのも、タブコードは文字列の頭を揃えるために使われる事があるので、4スペースの時もあれば、3スペースのときも、2スペースのときも、1スペースのときもあるのです。
なので、エディタにタブコードをスペースに変換する機能が備わっていれば、まず間違いなく文字列の頭を揃えてくれます。

ようは、これを自動で複数のファイルに対して実行したいと。
エディタ側に複数ファイルを一気にに編集する機能がついていれば可能っぽいですが、僕の愛用エディタであるvimではどうやっていいのかわかりません。

そこで、色々調べたところ、どうやらvimにはexモードという機能が存在し、コマンドのみを実行する事が出来るようです。
これをワンライナーで複数ファイルに噛ましてしまえば、エディタ上でタブコードをスペースに変換した時の美しい文字列の頭揃えが出来るはずです。

というわけで、出来たワンライナーがこれ。

find . -name "*.php" -exec ex -c 'ret' -c 'wq' {} \;


この例では、拡張子がPHPのファイルに対して実行しています。
-exec 以降が肝で、


  • ex - vim -e と同様。Exモードっというらしく、指定ファイルにコマンドを発行出来る。

  • -c はコマンドを引数で指定するオプション。+でもいいみたいだけど、findに+を渡すと怒られてしまった。



ようするに、:retして、:wqしてるだけなんです。
これを、カレントディレクトリ以下の*.phpに対してやってるだけ。

自前で文字列カウントしながらスペース変換やろうとすると結構めんどくさい気がするので、これはなかなか便利そう。
これでvimのコマンド部分だけを使って複数ファイルをごにょごにょする、なんてことも難しくないですね。

ひとつ悔しいのは、この機能を生粋のEmacserである、id:k1LoW氏から教えてもらったことです。
k1LoW++!

id:teramakoさんのエントリーが大変参考になりました。
ex(vim -e)コマンドを使おう

2008年8月22日金曜日

cakephp.vimについて、CakePHPの中の人からメールが来た!!

codecheck.inのIRCにも来てくれて衝撃が走りました。
cakephp.vimはこれから進化していく予感です。
もちろん僕もお手伝いする予定。

ただ、英語力の無さを痛感しまくったので、これからマジで勉強しようと思います。
通訳してくれたみんな++

2008年7月1日火曜日

本当はTerminal.app上でvimを使いたいけどモッサリ感が気に食わないのでわざわざGVimを起動していた件

前から思っていたのですが、ある程度まとまったのでメモです。
何か他にいいアイデアあったら教えてください><

ここ半年くらいエディタにvimを愛用するようになりましたが、Terminal.app上に起動したvimではなく、ここのcocoaなGVimを使っています。

通常お仕事での開発や、色々お遊びするときにも大抵シェルは触っているので、本来はTerminal.appの中でvimを起動し、色々やりたいわけですが、


  • Terminalの中でvimを動かした時に全体的にもっさり感じる

  • 特にカーソル移動の際の重たい感じが耐えられない



これらはデフォルトのTerminal.appのウインドウサイズ(80x24)ではほとんど問題にならないのですが、大きくすればするほど、どんどん動きが重たくなっていきます。
僕のVimのウインドウは大抵左側にカレントディレクトリのツリー表示があり(元TextMateユーザーだからか!?)、編集部分も上下二つに分かれています。
3ぺインのメールソフトのような感じなわけです。
こんな環境なので、ウインドウサイズは必然的に大きくなりがちです(160x50くらいあると快適)。

このくらいのウインドウサイズになったときにどうもvimの動作、特にカーソル移動にもっさり感を感じるため、CocoaなGVimを起動していました。
これはサクサク動いてくれるので、多少不便だけどもサクサク感を優先していました。
ただ、やはりシェルに戻るときなどはQuickSilver経由でTerminalにフォーカス移したり、Command+Tabで切替えたりしていたわけです。
サクサクだけど真のサクサクではないというかw

で、今日この問題をようやく解決できそうなひとつのソリューションを発見。

「X11 + rxvt-unicode + screen + kinput2 + canna な環境でvimを使う」
です。Macに付属のX11上でurxvtを起動し、その中でvimる。というわけ。

X11を起動したときにいきなり起動するxtermは日本語は表示できないものの、異常にサクサクな感じなのが気になっていました。
じゃあこれに日本語が通りそうなTerminalアプリケーションを入れてその中でvimを起動したら速いのではないか?と思ったわけです。
で色々ぐぐってみたところ、rxvt-unicodeとkinput2とcannaでなんか出来そうだぞ。というわけ。
Terminal.appも広大なウインドウサイズでscreenするともっさりしてましたがurxvtはサクサクです。これならタブの代用になってくれます。

全部MacPortsからインストール出来るので構築は簡単でした。
各種設定も下記ページが非常に参考になりました。
Beginning OS X 10.5/インフラ整備編

これらな環境で実際今日一日作業してみているのですが、CocoaなGVimよりもサクサク。いまのところ不満無しです。
1280x1024のディスプレイいっぱいurxvtのウインドウにしてvimを起動しても全くサクサク感が失われません。screenによるシェル移動もすいすいいけます。
僕はもともとTerminal.appもGVimもアンチエイリアスをオフにして作業していたので、文字の綺麗さとかそのへんもあまり気になりません。
気になり出しても設定でなんとかなりそうなところだし、大丈夫でしょう。

日本語入力だけはcannaとkinput2に慣れる必要はありますが、
このサクサク感の為なら全然問題ありません。

しばらくこの環境でいってみることにします。
本当は、Terminal.appがモッサリしなけりゃフォントも綺麗だし最強なんですけどね。。

このエントリを書いていて、ふと他のvim使いやEmacs使いはどうやっているのか気になりました。
みんなもっさりを耐えながらやっているのだろうか、それともcom.apple.Terminal.plistとかに爆速の設定があるのだろうか。
もっといいターミナルエミュレータがあるのだろうか。
みんなどうやってるんだろう?

2008年6月22日日曜日

Vimキーバインド強制plugin"鬼軍曹.vim"をコミットした

Via: Emacsキーバインド強制elisp"鬼軍曹.el"をcommitした

Emacsのキーバインドに慣れるため、強制的にカーソルキー他の機能を無効化してしまう鬼軍曹.elファイルがリリースされています。

これの作者のid:k1LoWからvim版作ってちょ、と言われていたので、単にmap設定をpluginに突っ込むというかなりお手軽な方法で、鬼軍曹な.vimが誕生しました。

鬼軍曹.vim
ダウンロード用鬼軍曹.vim

使い方は鬼軍曹.vimを、

~/.vim/plugin/drill-instructor.vim


とかに置いてもらえればOKです。

基本的にはEmacs版と同じようにカーソルキー等を無効にするわけですが、Vimはおおまかにコマンドモードとインサートモードの二つのモードが存在するため、その両方ともにカーソルキーを使えなくしてみました。

もし、間違えてカーソルキーを打ってしまってもステータスラインに、

Don't use left-key!!! Press [h]


と、鬼軍曹.elと同じく優しく叱ってくれますのでご安心を。
でも、決してカーソルが動いてくれる事はありません。厳しい!

ちなみにインサートモード時にカーソルキーを押してしまった場合、

Don't use left-key!!! Press [ESC] to [h]


と、一旦コマンドモードに戻ってからカーソルを移動させるのがVimの流儀だ、と教えてくれます(これ、僕はこう思っているんですが、一般的にはインサートモードのままカーソル動かしたりしますかね?)

ビジュアルモードの時も強制しようとか色々あるんですが、
map設定はひとつ覚えればわかりやすくてとっつきやすいので、これ以上Mな環境にしたい方は直接.vimrcなりにmapをガンガン書いちゃう方が早いかもです。

2008年6月17日火曜日

vim7の配列と連想配列メモ

vim7では、配列をList, 連想配列をDictionaryと言う。

配列
let array = ['one', 'two', 'three']
for val in array
echo val
endfor


連想配列
let dic = {'one': 'een', 'two': 'twee', 'three': 'drie'}
for key in keys(dic)
echo key . ': ' . dic[key]
endfor


なんかとってもJavaScriptっぽい。

let dic = {
'one': 'een',
'two': [
{'option': 'a'},
{'option': 'b'},
{'option': 'c'}
],
'three': { 'option': 'd' }
}


入れ子も全然OKだけど、実はこのままでは動かない。

let dic = {
¥ 'one': 'een',
¥ 'two': [
¥ {'option': 'a'},
¥ {'option': 'b'},
¥ {'option': 'c'}
¥ ],
¥ 'three': { 'option': 'd' }}


と、改行エスケープすればおk

2008年6月6日金曜日

CakePHPのMVC間を動き回れるcakephp.vimを作ってみた

CakePHPのMVC間を動き回れるcakephp.vimを作ってみた。

http://trac.codecheck.in/share/browser/dotfiles/vim/cohtan/.vim/plugin/cakephp.vim

設計とかくそです。とりあえず、:help usr_41みながらまずは動くものをとこさえてみました。
appの中でvim . とかしないといけないくらいしょぼい(カレントディレクトリがapp内限定)ですが、


  • :CakecontrollerでModelやViewから該当のControllerへ移動。Viewからの場合は該当functionの先頭行へ飛ぶ

  • :CakemodelでControllerやViewから該当Modelへ移動

  • :CakeviewでControllerから該当Viewへ移動



とか、そんな感じです。
一人でコツコツCake使って書いているとMVC間をむっちゃ横断するので、少しでも手軽に横断出来ないものか。
と常々思っていました。

rails.vimにはまだまだ到底及びませんが、MVC間の移動が楽になっただけでも便利っぽいです。

ちなみにこれのEmacsバージョンをk1LoW氏が作っています

2008年5月2日金曜日

VimでHTML/CSSを保存と同時にFirefoxのリロードを実現する MozRepl使用バージョン

本日の#codecheckin@irc.codecheck.inでの話題。

k1LoWタンもEmacsでブラウザリロードがやりたげ。でも彼はうぶんつぁーなのでAppleScriptは使えない

mizzyさんからMozReplのご提案

俺も便乗してMozRepl経由のリロードに書き直した

書き直したchangesetは下記です。
VimからFirefoxリロードする処理をMozLabベースに書き換えた
MozReplモジュールを使うように変更した

k1LoWタンも無事に完成したようだ(【Emacs】ファイルを保存したときにFirefoxのアクティブページを更新させる

codecheck.inではこんな感じで楽しくお話をしていますよ!

2008年3月5日水曜日

MacのgvimではCTRL+[が効かない!?

ふとしたことから、

macのgvimでCTRL+[がつかえないなあ
Mac の gVim でつまずいたこと

え!?そうだっけ?と思って自分のgvimでも試したところ本当に使えなかった。

そこで、.vimrcに
imap <C-[> <ESC>
imap <C-]> <ESC>


を追加したところ、vimでもgvimでもCTRL+[でESC状態が可能になりました。
CTRL+]でもESCになるけど、まぁよし。

2008年3月3日月曜日

VimでHTMLやCSSの保存と同時に各ブラウザのリロードを実現する

最近はHTMLやCSSも書いてます。
ずっとVimを使って書いているのですが、いちいちブラウザチェックの為にリロードするのがめんどくさくてかないません。
皆さんそう思っているようで、

CSSを保存したときにブラウザを更新 mac+applescript+emacs+safari
というエントリを見つけました。
Emacsウラヤマシイ!Vimでもやりたい!

ということでvimrcとAppleScriptを連携させてやってみました。
しかも、
Mac+AppleScript+Vim+Safari+Firefox+Opera
という感じで、Safari & Firefox & Operaも同時更新させるようにしました。

まずはAppleScript。
/Applications/AppleScript/スクリプトエディタを起動し、reload_browser.scptという名前で下記のコードを保存します。

reload_browser.scpt
tell application "Safari"
do JavaScript "location.reload()" in document 1
end tell

tell application "Firefox" to activate
tell application "System Events" to keystroke "r" using {command down}

tell application "Opera" to activate
tell application "System Events" to keystroke "r" using {command down}

tell application "Vim" to activate


コードは$HOME/bin/に保存してます。
FIrefoxやOperaで直接Javascriptを実行する方法がよくわからなかったので、System Eventでキー押させてます。
リロードが終わったらVim(僕はGVim使ってるので)にactivateしてフォーカスを戻す。
後はこれをvimから叩くだけ。

:!osascript /Users/cohtan/bin/reload_browser.scpt


ぶっちゃけ、これでは使い勝手が悪いので、CTRL+Gにマッピングすることに。
Vimのどちらのモードからも使えるよう下記の設定を.vimrcに追加。

imap <C-G> <ESC>:w<CR>:!osascript /Users/cohtan/bin/reload_browser.scpt<CR><CR>a
nmap <C-G> :w<CR>:!osascript /Users/cohtan/bin/reload_browser.scpt<CR><CR>


これだけで、いつどんな時でもCTRL+Gで保存&各ブラウザリロードが実現!
快適っすよー!

2008年2月13日水曜日

Vimのプラグイン、bufexplorer.vimが便利っぽい

BufExplorer.vimが便利そうな予感。
GVim全画面表示の日が近そうな予感。

普段からバッファってCTRL+Lで見れるようにしていたのですが、その度にステータスバーがびょこっとでかくなるのが気に食わなかったのですが、これは色々設定出来そう。

ひとまず、
nmap <c-l> :ls<CR>

から
nmap <c-l> :BufExplorer<CR>

に.vimrcを変更しました。

2008年2月8日金曜日

一度閉じたタブでも簡単に復活出来る「Vimperator」

ブラウザのタブを誤って閉じてしまう事ありませんか?

僕はありますorz

でもVimperatorを使っていると安心!

もし誤って閉じてしまっても、「u」キー一発で戻ってきます!
開いていたタブの場所まで同じです!これはすごい!

Firefoxを一度終了しようが関係ありません!
スクロールの位置まで同じ!

独自にBufferとか持ってるのか、単なる履歴から引っ張ってきてるのか。

これでFirefoxは真面目なサイトの閲覧専用ブラウザになりましたw

2008年2月7日木曜日

FirefoxをVimっぽくする「Vimperator」を入れた

最近エディタをVimに乗り換え、Vimらしいカーソルの動き方にも慣れつつあります。キー押しっぱなしの移動ではなく、目線にカーソルが追従するような移動方法は一度出来るようになるとやめられないです。となると、今度は普段のブラウジングでも同じ事が出来ればいいのに・・・なんて考えてしまうもの。

先人もどうやら同じ事を考えていたようです。

Vimperator

というFirefoxのアドオンをインストールする事で、FirefoxをVimのショートカットキーで操作出来るようになります。インストール後にFirefoxの画面構成が今までに見た事ないくらいシンプルになってしまうので、

$HOME/.vimperatorrc

に、

set guioptions=mTb

としておくのがよさげです。
このツールで非常に満足していたのですが、普段使っているLivedoor Readerのショートカットキーが効かなくなってしまって残念とか思っていたのですが、

vimperator plugin の autoIgnoreKey.js の改良

autoIgnoreKey.js ! すばらしすぎます。
これを、

$HOME/.vimperator/plugin/autoIgnoreKey.js

とかに入れておけばLivedoor Readerでバッチシショートカットキーが効きます!
これからますますVim脳になろうと思います。



微妙に見づらいですが、コマンドモードからJavascriptも書けたりします(Firebug使ってたらあまり意味ないですけど)!

久しぶりにブログを書く

最初ログインできなくて焦った。 いや、ログインはできたのだが、ログイン後に自分のブログの管理画面に遷移できず、新しいブログを作成する画面になってしまったからビビッてしまった。 どうやら、Google+(現在はサービス終了)に紐づいたプロフィールを設定しているとこのような状況に陥る...