coリ・ー・ン<2nd life

2006 09 09

Developer Enviroments Conference の発表資料

9/8 に開かれた DEcon で windows enviroments and vim という内容で発表してきました。主に自分が使ってる windows の開発に便利なツールと、vim についてプレゼンしてきました。時間大幅に押してしまいましてスイマセン…。

また、スピーカ参加者のみなさん、お疲れ様でした。他の方の開発環境ポリシーが聴けて大変参考になりました。あとカンジマン(id:tnx)には毎度の事ながら様々な準備お疲れ様でした。

自分のプレゼンには自作はてな記法つかったプレゼンツールを使ったのですが、よくよく考えるとそれをエントリーに貼り付ければいいじゃん!ということに気づいたので、以下に発表資料を貼り付けておきます。

windows environments and vim

secondlife

発表内容

  • windows での環境
    • どんなツールがあると便利か
  • vim
    • vim の基本と vim7 での新機能と text-objects について

自己紹介

開発環境

OS
Windows XP + coLinux (debian sid)
マシン
Thinkpad X41 + 17inch or 24inch モニタ

windows environments

というわけで、利用している便利なソフトウェアの紹介

fub

fuckin uni$ys browser

http://www.geocities.co.jp/SiliconValley-Bay/6049/

窓使いの憂鬱 (mayu)

http://mayu.sourceforge.net/

bluewind

http://cspace.s2.xrea.com/software/bluewind/

Avesta

http://lamoo.s53.xrea.com/app/

パスコピー

http://www.vector.co.jp/soft/win95/util/se065538.html

Eijiro

英和・和英のインクリメンタルサーチ可能な辞書

英辞郎 第二版「Special Valueパック」

英辞郎 第二版「Special Valueパック」

シフトムーブ

http://www.forest.impress.co.jp/article/2005/05/18/shiftmove.html

kbdacc

http://www.jsdlab.co.jp/~kamei/

migemize explorer

でも今見たらサイトが消えてる!ライセンスが明記されてないため再配布できないみたい。

putty

PuTTY β 0.58 ごった煮版

  • 安定してる
  • 多岐な設定
  • Pageant (keychain)
  • ctrl + tab で putty window だけ切り替え
  • ini ファイルで設定持ち運びも簡単

フォントの話

ちょっと寄り道

M+ BITMAP FONTS

アンチエイリアスは小さいフォント可視性が下がるので、プログラミングには向かない

Alt-Tab Replacement

Microsoft PowerToys for Windows XP

alt+tab 拡張

htmlhelp

Linux環境

coLinux

うれしいところ

cofs0:/  /mnt/win_c cofs   user,noexec,dmask=0777,fmask=0666 0 0
  • ただで環境構築できた、けど
    • VMWare も一部タダだし…
  • /dev/clipboard 欲しい!

zsh

  • PROMPT="%{^32m%}[$WINDOW]%{^m%}\$ "
  • RPROMPT='%{^34m%}[%5~]%{^00m%}'
[1]$     [~/.zsh]

screen

hardstatus alwayslastline "%H %`%-w%{=b bw}%n %t%{-}%+w"
autocmd BufEnter * if bufname("") !~ "^\[A-Za-z0-9\]*://" | silent! exe '!echo -n "^[k%^[\\"' | endif

dotfiles の svn 管理

[2]$ ls ~/svn/dotfiles
ctags  irb  screen  ssh  subversion  symlink.rb  vim  zsh
[2]$ ls -a ~/svn/dotfiles/vim
.  ..  .gvimrc  .svn  .vim  .vimrc
  • symlink.rb で適当に管理
#!/usr/bin/env ruby

d = Dir.glob('*/.*').reject{|n| n =~ %r!/((\.svn)|(\.{1,2}))$! }
d.each do |f|
  file = Dir.pwd + '/' + f
  `ln -s #{file} ~/`
end

vim

全世界で開発者がもっとも使ってる(らしい)、至高のエディタ

  • vim の基本操作
    • 軽く vim についてのご紹介
  • vim7 の新機能
  • text-objects について

ホントにそんなに使ってるの?

250 名にアンケートとってみた

http://q.hatena.ne.jp/1157680174

その他102
秀丸40
emacs(含むmeadow)27
vim15
Em Editor12
メモ帳12
eclipse10
visual studio9
サクラエディタ8
xyzzy8
vim 以外の vi clone4
萌ディタ3

アンケート結果考察

というわけで、日本じゃ emacs > vim

Emacs派 と vim(vi)派の確執

  • それ Emacs でできるよ
  • それ vim でできるよ
    • わりとどっちでもできると思う

モードがあるか無いかが一番の違い

vim の好きなところ

vimモード

主に四つ

  • normal
  • insert
  • visual
  • cmdline

基本的にはモードがあると意味不明になってユーザビリティ的によろしくない

  • どうやって保存するんだ!終了するんだ!
  • 慣れると便利

パズル的な操作

編集操作がパズル

  • ここの部分を選択するには一番どうすれば早い?
  • あの文字に飛ぶにはどうすれば?

詰めvi

詰めvim

// i を ix に変更
for(int i=0; i<100; ++i)
	sum += value[ix];

j:s/i/ix/gc^Mna

  • j で下に移動
  • :s/i/ix/gc で確認モードで置換
  • na で最初は置換しない(no) その後aで全置換

詰めvim

何通りも解き方がある

  • 実際の vim 操作では
    • 最短キー操作が重要ではない
    • 考える時間と少ないキー操作の一番ほどよい感覚で操作

vim での移動

主に /,?,*,# を使った移動

  • / や ? で前方、後方検索
    • 移動に使いまくります
  • *, # でカーソル下の単語を順に移動
    • 使いまくります
    • 移動した後に s//foo/g でその単語置換も
  • vi 例で良く紹介されている 5w とかは使わない
    • 使うとしても wwwww
    • ものぐさ
  • fX,FX で前方、後方のマッチするXへ移動
    • 自分は使ってない
    • /X, ?X での移動がメイン

/ ? の検索

  • incsearch 派
  • noincsearch 派
  • hlsearch 派
  • nohlsearch 派

自分は

  • noincsearch 派
  • nohlsearch 派

なんで vim じゃインクリメンタルサーチしないの?

  • ほいほい移動されると疲れるし
  • たぶん好みの問題

vim って一つしかファイル開けないの?

間違いです

  • buffer や window, tab(vim7 から)があるよ
  • :vi foo.txt で開ける
  • :ls でバッファ見れる
  • :bn, :bp などで移動

でも使いにくいのでプログラミングには minibufexp が個人的には必須

スキームを開く

デフォルトでこんなことも

ctrl+a, ctrl+x

数値のアップダウン

  • ちょっとの調整が楽
  • true/false などもプラギン使えば可能

ctags

tag を使うと…

マクロ

  • q で操作記録できる
  • qz で記録すると例えば
:register z
--- レジスタ ---
"z   /mini^MndwuGgg

で見れる

マクロをキー割り当て

キーボード操作を書くだけでキー割り当てができる

nmap si=j:s/i/ix/gc^Mna

すべてキー割り当てが可能

各種モードごとに、もしくはすべてのモードに簡単に

map " すべて
nmap " normal
vmap " visual

などなど。よく使うのは割り当てよう。

nmap <silent> eu :set fenc=utf-8<CR>

hook

わりと様々なタイミングhook できる

" cofs's fsync
autocmd BufNewFile,BufRead /mnt/c/* set nofsync

vimさわりなのに多すぎた!

shibuya.vim 開きたい!(半分じょうだん

最後に二つ

help の使い方

:help でひけるhelp超便利

:h autocmd " 組み込み関数とか
:h v_at " visual で at のヘルプ
:h gv " normal で gv のヘルプ

操作方法はtagと一緒

vim の各種コマンド意味がある

などなど

  • 基本コマンド意味さえ覚えると
    • あとは組み合わせ既存の技や新しい技が!

vim7 の新機能

とくにコレ便利!というのを紹介!

earlier, later

指定時間前の状態に戻る

:earlier 3m " 三分前の状態に
  • undo, redo を使いまると…
    • 特定状態に戻れないときがある
  • :earlier は時間軸の移動なので戻れる

tab

  • みんな大好きタブがついたよ!
    • 使ってません
  • buffer と window の保存
  • buffer だけで自分は十分

キーワード補完のすごい表示

  • cui で ncurses ってがりがり描画
  • かなり便利
  • 重い

vimscript の拡張

より python ぽく

  • dict 型(hash)
  • list 型

の導入

omnifunc

インテリジェンスな補完

<script t補完
<script t
        type="    *ContentType
        charset=" LangCode

などなど、場合に応じた補完と候補の説明などが表示される

text-objects

a
a それ自身を含むオブジェクト
i
inner それ自身の内側のオブジェクト

何が便利なの?

def method(foo, bar, baz)

barカーソルがあって

di(
delete inner (

を押すと

def method()

となる

何が便利なの?

コード続く…

def method()
  # ...
end

def〜end のどこでもいいので

vip
visual inner paragraph

def〜endを範囲選択

  • 似るなり焼くなりお好きなように

何が便利なの?


<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
</Files>

タグ部分を削除したいとき、タグ内部で

vatd
visual a tag delete

タグを選択して削除

text-objects まとめ

text-objects を理解しておけば、思い通りの文字列選択が可能

:h text-objects

慣れたら自分で text-objects みたいな物をつくっちゃおう

nmap vac $?\%(.*#.*class\)\@!class<CR>%V%0oj
nmap vic $?\%(.*#.*class\)\@!class<CR>%V%0o

vac で class〜end が選択される text-objects

まとめ

みなさんの開発の手助けになれば幸いです

おどんこますたーおどんこますたー 2006/09/09 08:46 パスをコピーは単純そうですが意外に便利そうですね。僕は参照がない場合は、入力したいパスのファイルやフォルダを入力フィールドにドラッグしてましたです。

imsutimsut 2006/09/09 10:10 「coLinux - * codb で windows の fs に楽にアクセス」とは、どういう意味でしょうか? codbで、直接Windowsのファイルが見えるということでしょうか?

weblogconcentweblogconcent 2006/09/09 11:29 「パスをコピー」も入れてみようと思います。私は「RakuCopy」を無いと死ねるぐらい(笑)使ってますが、<title></title>+URLなのでうるさい場合もあるかも。リンク集とか資料を作るに便利ですけど。

secondlifesecondlife 2006/09/09 13:05 > おどんこますたーさん
そういう方法もあるのですねー

> imsut さん
codb じゃなくて cofs の間違いでした。直接 win の fs にアクセスできます。

> weblogconcent さん
ブラウジング時のタイトル、URLのクリップボードコピーは自分はブックマークレットでやってしまっています。

imsutimsut 2006/09/09 14:56 cofs便利そうですね。experimentalとあったので敬遠していましたが、試してみます。
ありがとうございました。

chicago travelchicago travel 2006/10/25 21:03 <a href=http://www.geocities.com/travelbastard/chicago_travel.html >chicago travel</a> [URL=http://www.geocities.com/travelbastard/chicago_travel.html] chicago travel [/URL]

traveltravel 2006/11/02 03:35 <a href=http://travelcity.spaces.live.com/ >travel</a> [URL=http://travelcity.spaces.live.com/] travel [/URL]

traveltravel 2006/11/02 03:36 <a href=http://travelcity.spaces.live.com/ >travel</a> [URL=http://travelcity.spaces.live.com/] travel [/URL]

chicago travelchicago travel 2006/11/02 19:09 <a href=http://www.geocities.com/travelbastard/chicago_travel.html >chicago travel</a> [URL=http://www.geocities.com/travelbastard/chicago_travel.html] chicago travel [/URL]

cool sitecool site 2006/11/20 02:17 <a href=http://investorvillage.com/home.asp >cool site</a> [URL=http://investorvillage.com/home.asp] cool site [/URL]

cool sitecool site 2006/11/20 05:43 <a href=http://investorvillage.com/home.asp >cool site</a> [URL=http://investorvillage.com/home.asp] cool site [/URL]

cool sitecool site 2006/11/26 07:14 <a href=http://investorvillage.com/home.asp >cool site</a> [URL=http://investorvillage.com/home.asp] cool site [/URL]

cool sitecool site 2006/12/12 04:19 <a href=http://investorvillage.com/home.asp >cool site</a> [URL=http://investorvillage.com/home.asp] cool site [/URL]

cool sitecool site 2006/12/13 21:49 <a href=http://investorvillage.com/home.asp >cool site</a> [URL=http://investorvillage.com/home.asp] cool site [/URL]

cool sitecool site 2006/12/21 01:32 <a href=http://investorvillage.com/home.asp >cool site</a> [URL=http://investorvillage.com/home.asp] cool site [/URL]

cool sitecool site 2006/12/21 01:41 <a href=http://investorvillage.com/home.asp >cool site</a> [URL=http://investorvillage.com/home.asp] cool site [/URL]

cool sitecool site 2006/12/23 07:31 <a href=http://investorvillage.com/home.asp >cool site</a> [URL=http://investorvillage.com/home.asp] cool site [/URL]

cool sitecool site 2007/01/11 07:00 <a href=http://investorvillage.com/home.asp >cool site</a> [URL=http://investorvillage.com/home.asp] cool site [/URL]

cool sitecool site 2007/01/18 14:03 <a href=http://investorvillage.com/home.asp >cool site</a> [URL=http://investorvillage.com/home.asp] cool site [/URL]

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

プログラミングRuby 第2版 言語編
Ruby を始めようと思う人から玄人まで身近に置いておきたい一冊
Ruby on Rails入門―優しいRailsの育て方
Rails 入門書の決定版!あのくまくまーの独特な解説ですんなり読める!