yaotti's diary

Software is Eating the World

Vim勉強会へ行ってきた

Emacs使いだけど敵状視察として行ってきました.なかなか面白かった.
何人かの発表のち,vimscriptコードリーディングという流れ.
以下結構適当なメモ+Emacs設定へのフィードバック

Emacsからvimid:kozo-niさん

  • vimは設定が楽,楽しい
  • smartchr.vim
    • =の後に空白とかの補完
    • 良いなあこれ,欲しい
  • FuzzyFinder
    • anythingぽいもの?
  • snipMate
  • ctags, taglist.vim
    • ctags -Rを実行して:Tlistと打てば大体わかる
  • 検索したい単語の上で*を押すと検索
    • これは便利
    • Emacsでもやりたい(デフォルトではない)
  • vimにとってautocomplpop,neocompとfuzzyはおおきい
  • Chromeのvimp=>vimlike smoozie

Vimを使ってアジャイルな企業に転職 id:guyonさん

  • 「(vimは)手足のように動いてくれるらしいよ」
  • hudson: テストツール
  • 設定ファイルポータビリティ
    • rakeのレシピを書いてgithub管理,どこでもgit clone->rakeでインストールできる

gvim id:AzureStoneさん

  • windowsのgvim
  • アウトライン表示したい
    • foldings?
    • taglist.cvimでできる
      • ctagsで作ったタグリストを表示してくれる

vim設定,コードリーディング

あたりを読んだりした

付けも可能)

覚えたことなど

  • でウィンドウ移動
  • Emacsの強みは非同期処理
    • vimで,flymakeみたいに裏でがんがんmake走らせてその結果を使う,とかは難しいみたい

Emacsへフィードバック

vimの*(カーソル位置単語検索)が良さげなのでHow can I emulate Vim's * search in GNU Emacs? - Stack Overflowを参考にvimの*のような物を書いた.
(参考というか少しいじっただけ)

(defun isearch-word-at-point ()
  (interactive)
  (call-interactively 'isearch-forward))

(defun my-isearch-yank-word-hook ()
  (when (equal this-command 'isearch-word-at-point)
    (let ((string (thing-at-point 'symbol)))
      (setq isearch-string string
            isearch-message
            (concat isearch-message
                    (mapconcat 'isearch-text-char-description
                               string ""))
            isearch-yank-flag t)
      (isearch-search-and-update))))

(add-hook 'isearch-mode-hook 'my-isearch-yank-word-hook)
(define-key global-map (kbd "C-*") 'isearch-word-at-point)

isearchに引数で検索単語をいじれるならもっと良くなりそうなんだけど,とりあえずこれでC-*とすればそのカーソル下の単語*1をisearchする.
vimの*と違って,検索単語を修正できる.


今日一日でvimレベルが結構上がった気がする.*2
id:kozo-niさん,ありがとうございました.


追記
smartchr:smartchr.vim Emacs Lisp Ver. - Emacs/Lisp/Drill - Emacsグループ

*1:正確にはsymbolとして扱われるもの.純粋な単語が良ければ(thing-at-point 'word)にすれば良い

*2:戦闘力的には18=>58に