vim8.0がリリースされたようです。

Vim 8.0 released! - Google グループ

Asynchronous I/Oとchannelが気になります。golangのchannelみたいなものかな?

これでasyncなsyntasticが普通な感じになったら嬉しいです。

というか今それが普通じゃないのがキツイですね。

ここ1年ぐらい家のPCでも会社のPCでもvimが落ちる。

splitして保存して終了したりすると落ちる。

不要な設定を全部はずして(syntastic以外)最小限で動かしても落ちる。

syntasticを使わなければ落ちないが、syntastic的なことができないなら他のエディタ使ったほうが良い。

おそらくpure vimの世界の問題じゃなくてpythonとかrubyとかの拡張系がおかしいんだとおもう。

色んなパターンで落ちてる人がいて各種対策を試してみたけど現状、俺の力では解決できなさそう。

他にもそんな人がいたらおすすめしたいのがMacVim(やMacVim-Kaoriya)をCLIで使う方法。

~/.zshrc:

alias vim='env LANG=ja_JP.UTF-8 /Applications/MacVim.app/Contents/MacOS/Vim "$@"'

色々といい塩梅でコンパイルされてるので動く。落ちない。良い。

gitでブランチ変更するたびにvimで開いてたバッファが実ファイルと違ってしまうのでいつもqa!して開きなおしてた。

atomだとデフォルトで読み込みなおしてくれるのでいいよなと思ってました。

git - Refresh all files in buffer from disk in vim - Stack Overflow

bufdo e!すればいいらしい。

カワイイヤッター!

C-t: カーソル部分のタグにジャンプ

C-o: 前いた場所に戻る(tagに限らずいつも使いまくるヤツ)

g C-t: タグ候補が複数ある場合に候補一覧を表示

この3つだけでクッソはかどる

Xcodeとかの機能がうらやましい

IDEでは当然の機能ですが、クラスやメソッドの定義に飛べるのって便利ですよね。vimやemacsでは設定すればできるんだろうけどやってる人あんまり見ない。

開いてるbuffer内のものしか飛べないとか、明示的にtag生成コマンド実行とか論外。

そんな折、Gemfileのgemを含めて保存時自動tag生成してくれるvim-tagsというpluginがとても良かったのでご紹介。

szw/vim-tags

vim-tagsの設定

$ brew install ctags
# ~/.vimrc:
Bundle 'szw/vim-tags'
let g:vim_tags_project_tags_command = "/usr/local/Cellar/ctags/5.8/bin/ctags -f tags -R . 2>/dev/null"
let g:vim_tags_gems_tags_command = "/usr/local/Cellar/ctags/5.8/bin/ctags -R -f Gemfile.lock.tags `bundle show --paths` 2>/dev/null"
set tags+=tags,Gemfile.lock.tags

macデフォのctagsはbsdで色々違うのでbrewで入れてfullpath指定。

ファイル保存時にtagsファイルを生成。ちょっと遅くなるので非同期実行するvim-dispatch pluginとの連携も試してみたいと思います。

tpope/vim-dispatch

とにかく機能が細かくgemに分割される昨今。これははかどる!

Syntax highlightだけだけど。

" ~/.vimrc:
Bundle 'slim-template/vim-slim'
:BundleInstall

は無いかしら?

PSR0, PSR1, PSR2にしたがってPHPのソースコードをフォーマットしてくれるphp-cs-fixerを使う。(全部のルールに対応してるわけじゃない)

% sudo curl http://cs.sensiolabs.org/get/php-cs-fixer.phar -o /usr/local/bin/php-cs-fixer
% sudo chmod a+x /usr/local/bin/php-cs-fixer
% sudo php-cs-fixer self-update
% php-cs-fixer fix app/models/foo.php

vimから使う

~/.vimrc:

Bundle 'stephpy/vim-php-cs-fixer'
let g:php_cs_fixer_path = "/usr/local/bin/php-cs-fixer"
nnoremap <silent><leader>pcd :call PhpCsFixerFixDirectory()<CR>
nnoremap <silent><leader>pcf :call PhpCsFixerFixFile()<CR>

これでテンション上げてレガシーPHPを直す。

jitter + growlもいいけど、vimでもっと素早く直感的にエラーを知りたい。

そんな時はsyntastic

" .vimrc
Bundle 'scrooloose/syntastic'
:BundleInstall

syntasticはIDEみたいにエラーがあったら左にマークを表示してくれる。デフォルトでファイル保存時に走るので便利。

Terminal — vim — 88×26

coffeescriptは最初から対応してて、coffeeコマンドでsyntaxをチェックしてくれる。プラグイン形式になっているので自分で書けば何でも行けるハズ。coffeelintが走るようにしたいなあ。

I reinstalled Mac OS X Lion in Golden Week. 

Clean install by Bootable USB Memory at first.

System Preferences

System Preferences

  • Keyboard
    • Keyboard
      • Delay Until Repeat
        • Shortest
      • Use all F1, F2, etc. keys as standard functions keys [X]
      • Modifier Kyes
        • Caps Lock
          • Control
    • Keyboard Shortcuts
      • Application Shortcuts
        • +
          • Application: All Applications
          • Menu Title: Zoom
          • Cmd-Enter
        • +
          • Application: Terminal
          • Menu Title: Select Next Tab
          • Cmd-]
        • +
          • Application: Terminal
          • Menu Title: Select Previous Tab
          • Cmd-[
        • Full Keyboard Access:In windows and dialogs, press Tab to move keyboard focus between:
          • All controls
      • Mouse
        • Point & Click
          • Scroll direction: natulal [ ]
      • Dock
        • Automatically hide and show the Dock [X]
      • Energy Saver
        • Power Adapter
          • Computer sleep
            • 3 hrs
          • Display sleep
            • 3 hrs
      • Spotlight
        • Search Results
          • Spotlight menu keyboard shortcut: [ ]
          • Spotlight window keyboard shortcut: [ ]
      • Date & Time
        • Clock
          • Use a 24-hour clock [X]
          • Show date [X]
      • Desktop & Screen Saver
        • Screen Saver
          • Start screen saver: Never
      • Software

        Applications

        Software from App Store

        Purchases

        • Keynote
        • Xcode
        • Echofon Lite for Twitter
        • iShowU
        • Skitch
        • The Unarchiver
        • MPlayerX

        Other

        • Software Update
        • Remove all icons from Dock

        Auto start movies on QuickTime X

        $ defaults write com.apple.QuickTimePlayerX MGPlayMovieOnOpen 1

        Accelarate a keyrepeat

        $ defaults write NSGlobalDomain KeyRepeat -int 1

        And reboot.

        Show dot files in Finder

        $ defaults write com.apple.finder AppleShowAllFiles TRUE
        $ killall Finder

        Disable the “Is An Application Downloaded from the internet” Warning

        $ xattr -d -r com.apple.quarantine ~/Downloads

        Disable Dashboard

        $ defaults write com.apple.dashboard mcx-disabled -boolean YES
        $ killall Finder

        Hide a last login date

        $ touch ~/.hushlogin

        Terminal

        Terminal — zsh — 80×24

        • Preferences
          • Settings
            • Text
              • Monaco 14 pt
            • Window
              • Scrollback
                • Limit number of rows to: 10000
          • Shell
            • When the shell exits:
              • Close if the shell exitd cleanly

        Development Environment

        Xcode

        • Preferences
          • Downloads
            • Components
              • Command Line Tools
                • Install

        Android

        Download and Install Android SDK

        ssh

        $ cp -r /BACKUP_DIR/.ssh ~/

        zsh

        $ chsh -s /bin/zsh

        dotfile

        komagata / dotfile / source — Bitbucket

        bitbucket is pretty good for dotfile repos. because private repos is free.

        $ git clone git@bitbucket.org:komagata/dotfile.git ~/code/dotfile
        $ cd ~/code/dotfile
        $ ruby symlink.rb
        $ source ~/.zshrc

        vim

        Terminal — vim — 80×24

        .vimrc and plugins is contained dotfiles directory.

        Plugins:

        Bundle ‘The-NERD-tree’
        Bundle ‘quickrun’
        Bundle ‘fakeclip’
        Bundle ‘tpope/vim-rails’
        Bundle ‘vim-ruby/vim-ruby’
        Bundle ‘Shougo/neocomplcache’

        rvm

        $ curl -L get.rvm.io | bash -s stable
        $ source ~/.rvm/scripts/rvm
        $ rvm requirements

        homebrew

        $ /usr/bin/ruby -e “$(/usr/bin/curl -fsSL https://raw.github.com/mxcl/homebrew/master/Library/Contributions/install_homebrew.rb)”
        $ brew install libksba

        imagemagick

        If you get something wrong, use below.

        $ brew install imagemagick –build-from-source

        ruby

        You can’t use multibyte-language (Japanese etc) in irb when install without option.

        $ rvm pkg install readline iconv
        $ rvm install 1.9.3-p194 –with-readline-dir=$rvm_usr_path --with-iconv-dir=$rvm_path/usr

        mysql

        $ brew install mysql
        $ unset TMPDIR
        $ mysql_install_db –verbose –user=whoami –basedir=”$(brew –prefix mysql)” –datadir=/usr/local/var/mysql –tmpdir=/tmp
        $ cp /usr/local/Cellar/mysql/5.5.20/homebrew.mxcl.mysql.plist ~/Library/LaunchAgents/
        $ launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

最初からlisp環境には"あきらめが鬼なっていた"vimmerだがclojure環境はスゴイ揃ってる。

EvalToplevel

<LocalLeader>et

カーソルがあるとこのトップレベルのS式をreplに送る。

EvalFile

<LocalLeader>ef

ファイル全体をreplに送る。

EvalBlock

<LocalLeader>eb

VISUALモードで選択した部分をreplに送る。

EvalLine

<LocalLeader>el

カーソルのある行をreplに送る。

EvalParagraph

<LocalLeader>ep

カーソルのあるカッコ内をreplに送る。

RequireFile

<LocalLeader>rf

ファイルを:reloadフラグを付けて読み込む。

RequireFileAll

<LocalLeader>rF

ファイルを:reload-allフラグを付けて読み込む。

RunTests

<LocalLeader>rt

ファイルを:reloadフラグを付けて読み込んで、clojure.contrib.test-isのrun-testsでテスト実行する。

MacroExpand

<LocalLeader>me

カーソルのある一番内側のマクロを展開する。

MacroExpand1

<LocalLeader>m1

MacroExpandと同じだけどmacroexpand-1を使う。(一回だけ展開する奴)

DocLookupWord

<LocalLeader>lw

カーソルのあるとこのwordのdocを探して表示する。

DocLookupInteractive

<LocalLeader>li

プロンプトに任意の文字を入れてdocを探して表示する。

FindDoc

<LocalLeader>fd

入力したパターンを元にdocを探して表示する。(find-doc)

JavadocLookupWord

<LocalLeader>jw

カーソルのあるとこのwordのjavadocを外部ブラウザで開く。

JavadocLookupInteractive

<LocalLeader>ji

プロンプトに任意の文字を入れてjavadocを探して外部ブラウザで表示する。

SourceLookupWord

<LocalLeader>sw

カーソルのあるとこのwordのソースを表示する。ソースはCLASSPATHが通ってる必要がある。

SourceLookupInteractive

<LocalLeader>si

プロンプトに任意の文字を入れてソースを探して表示する。ソースはCLASSPATHが通ってる必要がある。

GotoSourceWord

<LocalLeader>gw

カーソルのある場所のwordのソースに飛ぶ。ソースはPATHが通ってる必要がある。CLOJURE_SOURCE_DIRS環境変数でPATHに追加しておく。

GotoSourceInteractive

<LocalLeader>gi

プロンプトに任意の文字を入れてソースに飛ぶ。ソースはPATHが通ってる必要がある。CLOJURE_SOURCE_DIRS環境変数でPATHに追加しておく。

MetaLookupWord

<LocalLeader>mw

カーソルのある場所のwordのメタデータを表示する。

MetaLookupInteractive

<LocalLeader>mi

プロンプトに任意の文字を入れてメタデータを表示する。

StartRepl

<LocalLeader>sr

新しいバッファに新しいreplをスタートする。同時に複数のreplがあるかも。

StartLocalRepl

<LocalLeader>sR

新しいバッファに新しいreplをスタートする。現在のバッファのnamespaceで初期化される。

AddToLispWords

<LocalLeader>aw

カーソルのある場所のwordをバッファのlispwordsオプションに追加する。これはフォームのインデントに使われる。