2011年12月21日水曜日

【21日目】vim++キーマッピング

vimmerのみなさんこんにちは。@umey111です。
Vim Advent Calendar 2011 もついに21日目です!
キーマッピングは十人十色だと思いますが、他の人のキーマッピングを見るのは、いつも新しい発見がありますね。(jjで抜けるとか、同時押し等々)
なので私も一部晒してみます。

・Esc
VimでEscはいろんな方法がありますが、Escって他のアプリでも結構使いませんか?
なので、私はwinでは、keyswapなどのリマップソフトで半角/全角をESCに割り当てて使ってます。(漢字切り替えは、Shift+Spaceにしてます)
そして、最近購入したMacでは、KeyRemap4MacBookでprivate.xmlに以下を追加し、Ctrl単押しをESCに割り当ててます。
<item>
  <name>Control_L to Control_L</name>
      <appendix>(+ When you type Control_L only, send Escape)</appendix>
  <identifier>remap.controlL2controlL_escapeorg</identifier>
  <autogen>--KeyOverlaidModifier-- KeyCode::CONTROL_L, KeyCode::CONTROL_L, KeyCode::ESCAPE</autogen>
</item>
Ctrl単押しでEscは最初は使いづらいEscされまくりでどうかと思いましたが、今では手放せなくなりました。
winでもAutoHotkeyを使えばいけそうな気がしますがまだやってません。。

・diff時のキーマッピング
vimのdiff使ってますか?私はバリバリお世話になってます!
WinMergeもいいですが、vimのdiffも十分いけてます。
ただ、デフォルトの前後の差分へ移動するキーマッピングが使いづらいので、
shift+jとkに割り当ててます。
diff時のみ動作させるため、少しいろいろする必要があります。
nnoremap <silent> J :call NextDiff()<CR>
nnoremap <silent> K :call Prevdiff()<CR>
function! NextDiff()
  if &diff
    silent normal! ]c
  else
    silent normal! J
  endif
endfunction
function! Prevdiff()
  if &diff
    silent normal! [c
  else
    silent execute ":call ref#K('normal')"
  endif
endfunction
ref.vimを使っているため、Kはref.vimの関数を呼んでます。

・fからのマッピング
fっていい位置にありますよね。ただ、デフォルトの動作はそこまで頻繁に使っていないので、
leader的に使ってます。

nmap <silent> fo :<C-u>Unite -buffer-name=outline outline -no-start-insert -auto-preview<CR>
nmap <silent> fl :<C-u>Unite -buffer-name=line line -start-insert<CR>
fo,fl以外のf動作に支障はありませんので、他にもfaとかfeとか割り当ててしまってよさそうです。

ということでVim Advent Calendar 2011の21日目終わります。
明日は、@nishikawasasakiさんです。


参考
keyswap
KeyRemap4MacBook
AutoHotkey

2011年11月6日日曜日

VirtualBOX4.1.*でホストオンリー アダプタの名前が選択できない

VirtualBOX4.1.*でネットワークにホストオンリー アダプタを選択すると
名前が選択できなかった。
4.0系では大丈夫でした。

CentOS5.7をVirtualBoxにインストール

CentOSをVirtualBOXにインストール
ネットワークインストールのISOだと、
「インストールプロセスを開始しています。数分かかることがあります」 で相当な時間かかるらしい。
だいたい30分ぐらいはかかったと思います。

参考
CentOS5.7をVirtualBoxにインストール - Ruby Study Go

2011年10月16日日曜日

neocomplcacheのsnippetsを修正する

neocomplcacheのsnippets便利ですね!
snippetsの追加方法は、vimテクニックバイブルに書いてありますので、
ここでは、既存に入っている一部のsnippetsの内容を変えたい場合の
やり方を載せておきます。

まず.vimrcに以下の設定を追加します。
let g:neocomplcache_snippets_dir = $HOME . '/.vim/snippets'


続いて、
$cd ~/.vim
$mkdir snippets
# いったん、標準のsnippetsから内容をコピーします。
$cd snippets
$cp ~/.vim/bundle/neocomplcache/autoload/neocomplcache/sources/snippets_complete/php.snip .
$vi php.snip


今回は、snippet functionを修正します。
変更前
snippet function
abbr function () {}
  ${1:public }function ${2:FunctionName}(${3})
  {
    ${4:// code...}
  }

変更後
snippet function
abbr function () {}
  /**
   * ${4:undocumented function}
   *
   * @return ${5:void}
   * @author ${6}
   */
  ${1:public }function ${2:FunctionName}(${3})
  {
    ${7:// code...}
  }


これでphpファイルでfunctionをsnippetsを出したときは、
変更後のsnippetsになります。

※標準のsnippetsは以下に入ってます。
便利なsnippetsが入っているので、一度目を通しておくといいと思います。
neocomplcache/autoload/neocomplcache/sources/snippets_complete

2011年10月11日火曜日

vimでphpを編集しているとneocomplcacheでvbの補完が出てウザい件

Vimでphpを編集してると、ネオコンでvbFunctionが補完されちゃいます。
原因は、syntax/php.vimがsyntax/html.vimを読み込んでいて、html.vimの中でsyntax/vb.vimが読み込まれてるからです。
 html内で今更vbスクリプトを使うこともないでしょうから、コメントにしちゃいましょう。以下の部分です。
"if main_syntax != 'java' || exists("java_vb")
"  " VB SCRIPT
"  syn include @htmlVbScript syntax/vb.vim
"  unlet b:current_syntax
"  syn region javaScript start=++me=s-1 contains =@htmlVbScript,htmlCssStyleComment,htmlScriptTag,@htmlPreproc
"endif
上記をコメントアウトしたあと、phpファイルを開いて以下を実行すると、vbFunctionが補完されないようになります。
:NeoComplCacheCachingSyntax
それにしても、もうちょいスマートな解決法があるといんですが・・・

2011年10月8日土曜日

bitbucketに既存のgitリポジトリを移行

先日bitbucketがGit対応しました。
bitbucketは無料でPrivateリポジトリが無制限に作れるという かなりの太っ腹です!
さっそく一部のソースをbitbucketに移行しましたので、 手順をメモしておきます。

bitbucketにprivateリポジトリの作成

  1. Repositoriesからcreate repositoryを選択します。
  2. Create new repositoryを選択し、project名とその他の項目を入力し、Create Repositoryをクリックします。※Privateの選択を忘れないようにしましょう。

既存のgitリポジトリ移行

$cd /home/gituser/project/
$git remote add origin https://hogehoge@bitbucket.org/hogehoge/project.git
$git push origin master
password:
#パスワードが要求されるので入力します。
※追加するremoteのパスには、以下の画像を参照してください。
これでbitbucketのWebでいろいろ見れます!
gitwebより見やすいと思うのでオススメです!
※すでにremoteリポジトリにoriginがある場合は、付ける名前を変更するなり、今のoriginをrmしてbitbucketの方をoriginにするなりしましょう!
 以下の例では、originを削除して、bitbucketの方をoriginとしています。
$git remote
origin
$git remote rm origin
$git remote add origin https://hogehoge@bitbucket.org/hogehoge/project.git
$git push origin master

2011年10月6日木曜日

vimでuniteのbookmarkをQuickMarkライクに使用する

vimperatorのQuickmarkが好きなので、vimのUniteを使ってquickmarkライクに設定して見ました。

.vimrcに以下のように設定します。
nnoremap gn :Unite -buffer-name=bookmark -default-action=tabopen -input=:: -immediately -start-insert bookmark nnoremap gN :Unite -buffer-name=bookmark -input=:: -immediately -start-insert bookmark
対象ファイルを開いて
:UniteBookmarkAdd
でbookmarkします。 この時に、bookmark名に::aなどをつけます。

これでvimperatorみたいにgnaなどやると、別タブですぐに開けます!

2011年10月5日水曜日

mingwを使用したWindows64bit版vimproc.dllの作り方

vimprocの最新版はdllが公開されていないので、コンパイルします。
・Mingw MSYSのインストール以下を参考にMingw MSYSをインストール
windows7 gvim にvimshellをインストールする | karakaram-blog
・Mingw64bit版のインストール
http://mingw-w64.sourceforge.net/
にアクセスして、
WIN64 Downloads->Automated Builds->mingw-w64-bin_i686-mingw_20110827.zipを選択してダウンロード
c:\に解凍
フォルダ名をシンプルにmingw64に変更
Pathをc:\mingw64\binに通す
※c:\msys\binより先にしてください。
以下を参考にc:\mingw64\binの〜gccをシンプルにgcc.exeに変更
Schwarze SQ: Windows 7 x64にMinGW x64環境を構築を見て、ファイル名の変更
・vimprocのコンパイル
git clone git://github.com/shougo/vimproc
cd vimproc
make -f make_mingw.mak

これでkaoriya64bit版で動くようになります。
だいぶ適当ですが、参考になれば。

2011年9月24日土曜日

Mac(Lion)で日本語入力(IME)の状態をアプリケーションごとにする

vimとか使ってると、フォーカスがきたときに、日本語入力の状態になってると激しくいらつきます。
なので、IMEの状態がアプリケーションごとになるように設定しました。
システム環境設定ー>言語とテキストー>入力ソースー>入力ソースのオプション 以下を参考にしました。
Mac(v10.6 Snow Leopard)/IME(日本語入力)の状態をアプリケーションごとに保持する - 俺の基地

phpマニュアルをvim上から見る(ref.vim)

ref.vimのインストール(pathogen.vimを使用)
$cd ~/.vim/bundle
$git clone git://github.com/thinca/vim-ref
phpの日本語マニュアルをダウンロード(http://php.benscom.com/download-docs.php)(Many HTML filesのやつ)して解凍
$cd ~/
$mkdir Documents
$cd Documents
$wget http://php.benscom.com/get/php_manual_ja.tar.gz/from/jp.php.net/mirror
$tar zxvf php_manual_ja.tar.gz
解凍したディレクトリを_vimrcで設定
vi _vimrc
let g:ref_phpmanual_path = $HOME . '/Documents/php-chunked-xhtml'
" vimprocをインストールしていない場合は、以下の設定も行う必要があるようです。(未確認)
" let g:ref_use_vimproc = 0 " vimprocをインストールしてない場合は0を指定
ここまでインストールしてw3mがなかったことに気づいたのでw3mをインストール
$yum install w3m
あとは、phpファイルで適当な関数の上でShift+kやるとマニュアルが引けます! 便利! Shift+kで動かなかったら他のマッピングと競合している可能性があります。 mapの確認しましょう!以下のようになってればOKです。
:map K
v K (ref-keyword)
n K (ref-keyword)
以下の設定は、ref.vimのhelp見ると書いてありますが、 デフォルトでは、qで終了しないので必須と思われます。
autocmd FileType ref call s:initialize_ref_viewer()
function! s:initialize_ref_viewer()
nmap b (ref-back)
nmap f (ref-forward)
nnoremap q c
nnoremap c
setlocal nonumber
endfunction

synergyでScroll Lockしてると切り替わらない

synergyでScroll Lockしてると切り替わらないようです。 まあ、たまたまScroll Lock押しちゃってただけだけど・・・