ctrlp.vimのキーバインドを変えてみる

kien/ctrlp.vim
https://github.com/kien/ctrlp.vim

で、ファイル一覧を立ち上げて、
候補の中から任意のファイルを開くときに、sp、vsp、tabでも開くことができる。
デフォルトでは以下のような設定。

:splitで開く
:vertical splitで開く
:tabで開く



キーマッピングを変えるには
こんな感じで。
例:に当てる

  let g:ctrlp_prompt_mappings = {
    \ 'AcceptSelection("t")': ['<c-a>'],
    \ }


これで、とするとタブで開くことができる。

vundleからneobundleに乗り換える

超絶、楽である。


vundle.vimを使っていたので削除してしまう。

$ cd .vim
$ rm -rf bundle
$ rm -rf vundle



改めてディレクトリを作成&neobundle.vimをgitでクローンしてくる。

$ mkdir bundle
$ cd bundle
$ git clone https://github.com/Shougo/neobundle.vim.git


$ vi .vimrc
"----------------------------------------------------
" neobundle.vim
"----------------------------------------------------
set nocompatible
filetype plugin indent off

if has('vim_starting')
  set runtimepath+=~/.vim/bundle/neobundle.vim/
  call neobundle#rc(expand('~/.vim/bundle/'))
endif

NeoBundle 'Shougo/neobundle.vim'
NeoBundle 'Shougo/neocomplcache'
NeoBundle 'Shougo/unite.vim'
NeoBundle 'Shougo/vimproc'
NeoBundle 'ujihisa/unite-locate'
NeoBundle 'violetyk/cake.vim'
NeoBundle 'tpope/vim-surround'
NeoBundle 'taglist.vim'
NeoBundle 'ZenCoding.vim'
NeoBundle 'ref.vim'
NeoBundle 'The-NERD-tree'
NeoBundle 'The-NERD-Commenter'
NeoBundle 'fugitive.vim'
NeoBundle 'TwitVim'
NeoBundle 'thinca/vim-quickrun'
NeoBundle 'thinca/vim-localrc'
NeoBundle 'dbext.vim'
NeoBundle 'rails.vim'
NeoBundle 'Gist.vim'
NeoBundle 'motemen/hatena-vim'
NeoBundle 'mattn/webapi-vim'
NeoBundle 'mattn/unite-advent_calendar'
NeoBundle 'open-browser.vim'
NeoBundle 'ctrlp.vim'
NeoBundle 'jelera/vim-javascript-syntax'

" Color Scheme
NeoBundle 'altercation/vim-colors-solarized'

filetype plugin indent on



.vimrcに設定書いたらvimを再起動してNeoBundleコマンドでインストールしてみる。

:NeoBundleInstall



バッチリ入った。
ついでにUniteからneobundle使いたいので、こちらを参考に
https://github.com/Shougo/vimproc/blob/master/doc/vimproc.jax
vimprocを入れたら以下のようにmakeする。

$ make -f make_gcc.mak



vimporcも入れたのでこれで次から

:Unite neobundle/install:! 

とかできちゃう!
やったね。

Apache Solrのインストール、設定

CentOSApache Solrのインストール、設定をする。
(手順が多少アレだが、とりあえずメモがてら。時間があれば逐次修正する。)


※Jettyのインストール
Jettyのダウンロード&解凍

# wget http://dist.codehaus.org/jetty/jetty-6.1.26/jetty-6.1.26.zip
# unzip jetty-6.1.26.zip



シンボリックリンクをはる

# ln -s /usr/local/src/jetty-6.1.26 /usr/local/jetty



jettyのコネクタを編集する

# vi /usr/local/jetty/etc/jetty.xml

    <Call name="addConnector">
      <Arg>
          <New class="org.mortbay.jetty.nio.SelectChannelConnector">
            <Set name="host"><SystemProperty name="jetty.host" /></Set>
<!-- こいつをコメントアウト   
          <Set name="port"><SystemProperty name="jetty.port" default="8080"/></Set>
-->
<!-- ↓追記する -->
          <Set name="port"><SystemProperty name="jetty.port" default="8983"/></Set>
<!-- ↑追記する -->
            <Set name="maxIdleTime">30000</Set>
            <Set name="Acceptors">2</Set>
            <Set name="statsOn">false</Set>
            <Set name="confidentialPort">8443</Set>
         <Set name="lowResourcesConnections">5000</Set>
         <Set name="lowResourcesMaxIdleTime">5000</Set>
          </New>
      </Arg>
    </Call>

     <Call name="addConnector">
       <Arg>
         <New class="org.mortbay.jetty.ajp.Ajp13SocketConnector">
           <Set name="port">8984</Set>
         </New>
       </Arg>
     </Call>



ajp_proxyを使ってapacheと連携する
※mod_proxy_ajpを読み込んでいる前提

# vi /usr/local/apache2/conf/httpd.conf
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so #有効になっていることを確認。
ProxyPass /jetty/ ajp://localhost:8984/ #最下部あたりに追記



パスを設定する

# vi /etc/default/jetty
JAVA_HOME=/usr/local/jdk1.6.0_24/
JAVA_OPTIONS="-Dsolr.solr.home=/usr/local/solr/solr/hoge/solr/ $JAVA_OPTIONS" 
JETTY_HOME=/usr/local/jetty
JETTY_USER=root
JETTY_LOGS=/var/log/solr/



※Solrのインストール
Apache Solrのダウンロード&解凍

# wget http://ftp.riken.jp/net/apache//lucene/solr/3.4.0/apache-solr-3.4.0-src.tgz
# tar xvzf apache-solr-3.4.0-src.tgz



シンボリックリンクをはる

# ln -s /usr/local/src/apache-solr-3.4.0 /usr/local/solr



exampleフォルダをコピーする

# cd /usr/local/src/apache-solr-3.4.0/solr
# cp -r example hoge 



lucene-gosenをゲットしてくる

# cd /usr/local/src/apache-solr-3.4.0/solr/hoge/lib
# wget http://lucene-gosen.googlecode.com/files/lucene-gosen-1.1.1-ipadic.jar



solr.warをコピーする

# wget http://ftp.riken.jp/net/apache//lucene/solr/3.4.0/apache-solr-3.4.0.tgz
# tar xf apache-solr-3.4.0-src.tgz
# cp /apache-colr-3.4.0/example/webapps/solr.war /usr/local/src/apache-solr-3.4.0/solr/hoge/webapps/solr.war

※今回はなぜだか、solr.warがsrcの圧縮ファイルには無かった。
少々、面倒だが、上記の場合はsrcじゃないほう(apache-solr-3.4.0.tgz)を解凍してくる。


usr/local/jetty/webapps/solr.warファイルにlucene-gosenファイルを突っ込み、
solr.warファイルを設置して対応

# mv solr.war solr.zip
# unzip solr.zip
# mv lucene-gosen-1.1.1-ipadic.jar WEB-INF/lib
# zip solr_war_in_lucene.zip admin/ favicon.ico index.jsp META-INF/ WEB-INF/
# mv solr_war_in_lucene.zip solr.war
# cp /usr/local/src/apache-solr-3.4.0/solr/hoge/webapps/solr.war /usr/local/jetty/webapps/



apache再起動する

# /usr/local/apache2/bin/httpd restart



jettyを起動する

# /usr/local/jetty/bin/jetty.sh restart



ついでにjettyをinit.dに登録しておく

# cp jetty.sh /etc/init.d/jetty
# cd /etc/init.d/
# chkconfig jetty on
# chkconfig jetty --list
# cd rc3.d/
# ll
lrwxrwxrwx 1 root root 15 Oct  5 20:04 S99jetty -> ../init.d/jetty



あとは、http://localhost:8983/solr/admin/
にアクセスして管理画面が正常に表示されていれば完了。


お疲れ様でしたー。

Vimで縦分割から横分割へ切り替える

全然、知らなかったので個人的にメモ。


例えば、splitでファイルを2つ開いている時に、
vsplitに切り替えたい時に使える。
もちろん、その逆もいける。
実際にやってみるとよく分かる。

 J
 K
 L
 H
※J、K、L、Hは全てLargeです。



これは、便利すぎ!

cake.vimに任意のキーバインドを割り当てる

vimCakePHPで開発する時に便利なプラグイン
これを使えば、MVC間の移動の煩わしさから解放されます。


CakePHP用のvimプラグイン、『cake.vim』1.2をリリースしました。 - yuhei.kagaya
CakePHP用のvimプラグイン、『cake.vim』を作ってみた。 - yuhei.kagaya
cake.vimのダウンロードはコチラ。
http://www.vim.org/scripts/script.php?script_id=3589


例えば、vimhoge_controller.phpを開いている時に
views/hoge/index.ctpを編集したい!と思ったときに、通常だと

:e ../views/hoge/index.ctp

と、いった具合に開きたいファイル名までのパスを指定する必要があります。


そんなときcake.vimを使えば、

:Cview index

で、:e ../views/hoge/index.ctpと同じことが行えます。
もし、/views/hoge配下に複数ファイルがあれば、
:Cview の後にtabを押下すれば/views/hoge配下にある全ファイルをリストアップしてくれます。


また、任意のキーバインドを割り当てておくと、
更に高速に任意のファイルを開き、編集することが可能です。
僕の場合は、スプリットでファイルを開くことが多いので
spとvspもキーバインドを割り当てています。

" バッファで開くキーバインド設定
nnoremap <Space>cc :Ccontroller
nnoremap <Space>cm :Cmodel
nnoremap <Space>cv :Cview
nnoremap <Space>cvw :Ccontrollerview
nnoremap <Space>cs :Cshell
nnoremap <Space>ct :Ctask
nnoremap <Space>ccf :Cconfig
nnoremap <Space>ccp :Ccomponent
nnoremap <Space>cl :Clog

" splitで開くキーバインド設定
nnoremap <Space>ccs :Ccontrollersp 
nnoremap <Space>cms :Cmodelsp
nnoremap <Space>cvs :Cviewsp
nnoremap <Space>cvws :Ccontrollerviewsp
nnoremap <Space>ccfs :Cconfigsp
nnoremap <Space>ccps :Ccomponentsp

" vsplitで開くキーバインド設定
nnoremap <Space>ccv :Ccontrollervsp
nnoremap <Space>cmv :Cmodelvsp
nnoremap <Space>cvv :Cviewvsp
nnoremap <Space>cvwv :Ccontrollerviewvsp
nnoremap <Space>ccfv :Cconfigvsp
nnoremap <Space>ccpv :Ccomponentvsp



ちなみにtabをよく使う人は、以下のような感じで設定しておくと、
使いやすいかもしれません。

" tabで開くキーバインド設定
nnoremap <Space>cct :Ccontrollertab

Vimのplugin管理はVundle.vimで。

Vundle.vimいいですよね。


ということで、今更ですが、Vundleでプラギン管理を始めてみたので
個人的な導入メモ。


まずは、既存の.vimrc、.vimをbkupしておく(ま、削除してもいいけど。。)

$ mv .vimrc .vimrc.bk
$ mv .vim .vim.bk



新しく.vimディレクトリを作りvundleをgitでインストール。

$ mkdir .vim
$ cd .vim
$ git clone git://github.com/gmarik/vundle.git
Cloning into vundle...
remote: Counting objects: 2058, done.
remote: Compressing objects: 100% (1376/1376), done.
remote: Total 2058 (delta 669), reused 1982 (delta 595)
Receiving objects: 100% (2058/2058), 247.45 KiB | 95 KiB/s, done.
Resolving deltas: 100% (669/669), done.



新しく.vimrcを用意

$ vi .vimrc
"----------------------------------------------------
" Vundle
"----------------------------------------------------
filetype off

set rtp+=~/.vim/vundle/
call vundle#rc()
filetype plugin on

Bundle 'cake.vim'
Bundle 'neocomplcache'
Bundle 'unite.vim'
Bundle 'surround.vim'
Bundle 'taglist.vim'
Bundle 'ZenCoding.vim'
Bundle 'ref.vim'
Bundle 'The-NERD-tree'
Bundle 'The-NERD-Commenter'



入れたいvimのプラギンは、
cake
neocomplcache
unite
surround
taglist
zencoding
ref
nerdtree
nerdcommenter
てな、感じ。以外と少ないかなぁ。他にオススメあれば教えてください><


ここまで準備できたらあとは、

:BundleInstall

で、おk。
更新するときは

:BundleInstall!

("!"びっくりマークを忘れずに)


snippetsだけは自分で管理するために以下のように指定しているので.vimrcに以下を追記。

let g:neocomplcache_snippets_dir = $HOME.'/.vim/snippets'



.vim/snippets/配下に.vim.bk/snippets/を持ってくれば完了

$ cp -r .vim.bk/snippets/ .vim/
$ ls .vim
bundle  snippets  vundle
$ ls snippets/
php.snip  vim.snip

おk


※もし、BundleInstallでこんな感じでエラーが出てたら
SSL cetificate problem, verify that CA cert is OK. ・・・

$ vi .gitconfig
[http]
    sslVerify = false

で回避すれば、BundleInstallできます。
詳しいことはこの辺をご参考にいただければと。。


Github のプライベートリポジトリからcloneするときにSSLエラーがでた場合の対応策 - Goodpic
http://www.goodpic.com/mt/archives2/2011/02/github_clonessl.html
gitやcurlwgetGitHubにアクセスするとcertification errorになる原因を調べてみた - それ、Gentooだとどうなる?
http://d.hatena.ne.jp/tmatsuu/20110614/1308010044