About-vim-settings

9. vim各種プラグイン

  • vim各種プラグイン

    x vundle : プラグイン管理
    x neocomplcache : 単語補完機能
    x vim-ref : マニュアル参照機能
    n quickrun : vimからソースコード実行、これは不要か
    n rails.vim : vimからrails用コマンド実行、これも不要か

まずはvundle導入

1
$ git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle

.vimrc を編集

1
$ vim ~/.vimrc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
"viとの互換性OFF
set nocompatible
"ファイル形式の検出を無効にする
filetype off

"Vundleを初期化して
"Vundle自身もVundleで管理
set rtp+=~/.vim/bundle/vundle/
call vundle#rc()
Bundle 'gmarik/vundle'

"プラグイン各種
Bundle 'Shougo/neocomplcache'
Bundle 'thinca/vim-ref'
"Bundle 'thinca/vim-quickrun'
"Bundle 'tpope/vim-rails' "rails.vim

"ファイル形式検出、プラグイン、インデントをON
filetype plugin indent on

プラグイン各種のインストールを行う

:BundleInstall

インストールは以上で終了、引き続き設定を行う


9-1. neocomplcache設定

設定ファイル(~/.vim/bundle/neocomplcache/doc/neocomplcache.txt)よりコピペ 以下の記述を.vimrcへ追加する

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
----------------------------------------
"*** for neocomplcache ***
" Disable AutoComplPop.
let g:acp_enableAtStartup = 0
" Use neocomplcache.
let g:neocomplcache_enable_at_startup = 1
" Use smartcase.
let g:neocomplcache_enable_smart_case = 1
" Use camel case completion.
let g:neocomplcache_enable_camel_case_completion = 1
" Use underbar completion.
let g:neocomplcache_enable_underbar_completion = 1
" Set minimum syntax keyword length.
let g:neocomplcache_min_syntax_length = 3
let g:neocomplcache_lock_buffer_name_pattern = '\*ku\*'

" Define dictionary.
let g:neocomplcache_dictionary_filetype_lists = {
    \ 'default' : '',
    \ 'vimshell' : $HOME.'/.vimshell_hist',
    \ 'scheme' : $HOME.'/.gosh_completions'
        \ }

" Define keyword.
if !exists('g:neocomplcache_keyword_patterns')
    let g:neocomplcache_keyword_patterns = {}
endif
let g:neocomplcache_keyword_patterns['default'] = '\h\w*'

" Plugin key-mappings.
inoremap <expr><C-g>     neocomplcache#undo_completion()
inoremap <expr><C-l>     neocomplcache#complete_common_string()

" Recommended key-mappings.
" <CR>: close popup and save indent.
inoremap <expr><CR>  neocomplcache#close_popup() . "\<CR>"
" <TAB>: completion.
inoremap <expr><TAB>  pumvisible() ? "\<C-n>" : "\<TAB>"
" <C-h>, <BS>: close popup and delete backword char.
inoremap <expr><C-h> neocomplcache#smart_close_popup()."\<C-h>"
inoremap <expr><BS> neocomplcache#smart_close_popup()."\<C-h>"
inoremap <expr><C-y>  neocomplcache#close_popup()
inoremap <expr><C-e>  neocomplcache#cancel_popup()

" For cursor moving in insert mode(Not recommended)
"inoremap <expr><Left>  neocomplcache#close_popup() . "\<Left>"
"inoremap <expr><Right> neocomplcache#close_popup() . "\<Right>"
"inoremap <expr><Up>    neocomplcache#close_popup() . "\<Up>"
"inoremap <expr><Down>  neocomplcache#close_popup() . "\<Down>"
" Or set this.
"let g:neocomplcache_enable_cursor_hold_i = 1

"*** for neocomplcache ***
function InsertTabWrapper()
  if pumvisible()
    return "\<c-n>"
  endif
  let col = col('.') - 1
  if !col || getline('.')[col - 1] !~ '\k\|<\|/'
    return "\<tab>"
  elseif exists('&omnifunc') && &omnifunc == ''
    return "\<c-n>"
  else
    return "\<c-x>\<c-o>"
  endif
endfunction
inoremap <tab> <c-r>=InsertTabWrapper()<cr>

9-2. vim-ref設定

vimでw3mのPATHを通すため、以下の記述を.vimrcへ追加する

1
let $PATH = $PATH . ':/usr/bin/w3m'

vim上で「:echo $PATH」として、vimでw3mのPATHが通っているか確認する 次にrubyリファレンスの取得と展開を行う

1
2
3
4
$ cd ~/Documents/Reference
$ wget http://doc.okkez.net/archives/201106/ruby-refm-1.9.2-dynamic-20110629.tar.gz
$ tar zxvf ruby-refm-1.9.2-dynamic-20110629.tar.gz
$ mv ruby-refm-1.9.2-dynamic-20110629 rubyrefm

refeファイル(コマンド)を作成する

1
$ vim /usr/local/bin/refe
1
2
3
#!/bin/sh

exec ruby -Ke -I ~/Documents/Reference/rubyrefm/bitclust/lib ~/Documents/Reference/rubyrefm/bitclust/bin/refe.rb -d ~/Documents/Reference/rubyrefm/db-1_9_2 "$@"

refeファイル(コマンド)のパーミッションを変更する

1
$ sudo chmod 755 /usr/local/bin/refe

以上でrubyのマニュアルを引きことが可能となる

参考:
http://d.hatena.ne.jp/holypp/20110703/1309711799 http://d.hatena.ne.jp/holypp/20110515/1305443997 http://d.hatena.ne.jp/diffshare/20111118/1321606902 http://iiidevelop.blogspot.jp/2011/07/vimvundle.html http://slumbers99.blogspot.jp/2012/02/vim-vundle.html http://blog.blueblack.net/item_133
http://masterka.seesaa.net/article/161781923.html


vim設定補追(2013/08/02)

上記プラグイン関連の設定以外の設定を以下に記す。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
"行番号設定
set number

"タブ文字、行末など不可視文字を表示する
set list

"インクリメンタルサーチON
set incsearch

"閉じ括弧が入力されたとき、対応する括弧を表示する
set showmatch

"検索時に大文字を含んでいたら大/小を区別
set smartcase

"シフト移動幅
set shiftwidth=2

"Insertモードで: <Tab> を挿入するのに、適切な数の空白を使う
set expandtab

"新しい行を作ったときに高度な自動インデントを行う
set smartindent

"行頭の余白内で Tab を打ち込むと、'shiftwidth' の数だけインデントする
set smarttab

"ファイル内の <Tab> が対応する空白の数
"set tabstop=4

"カーソルを行頭、行末で止まらないようにする
"set whichwrap=b,s,h,l,<,>,[,]

"検索をファイルの先頭へループしない
set nowrapscan

"色設定ON
syntax on
set background=dark

"日本語全角記号を全角として扱うよう設定
set ambiwidth=double

ruby1.9-rails3-appendix

5. 補足その他

aptitude パッケージ一覧更新(root権限で実行)

1
# aptitude update

rubygemsでのパッケージ検索

1
2
$ gem search --remote <検索文字列>
$ gem search -r <検索文字列>

コントローラの追加

1
2
$ rails generate controller <コントローラ名> <アクション名>
$ rails g controller <コントローラ名> <アクション名>

コントローラの削除(destroyの省略形は無し)

1
$ rails destroy controller <コントローラ名> <アクション名>

5-1. [補足追加] PostgreSQLの設定/動作確認

psql (PostgreSQL) バージョン:8.4.11

アクセス許可設定の変更

/etc/postgresql/8.4/main/pg_hba.conf をroot権限で編集する

68 行目辺りから

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
77c77
< local   all         postgres                          trust
---
> local   all         postgres                          ident
82c82
< local   all         all                               trust
---
> local   all         all                               ident
84c84
< host    all         all         127.0.0.1/32          trust
---
> host    all         all         127.0.0.1/32          md5
86c86
< host    all         all         ::1/128               trust
---
> host    all         all         ::1/128               md5

上記を変更後、root権限にてpsqlデーモンを再起動する

1
# /etc/init.d/postgresql restart

その後、psqlに接続しテーブル等を確認する

1
$ psql -U postgres

rails3 でPostgresSQLを使用可能にする

root権限で postgresql-server-dev-8.4 をインストールする

1
# aptitude -y install postgresql-server-dev-8.4

gem用Postgresパッケージをインストール

1
$ gem install pg

サンプルアプリを作成し、PostgreSQLとの連携テストを行う

例)

1
$ rails new psqldemo -d postgresql

アプリ内のGemfileに以下の行を追加

1
2
gem 'pg'
gem 'therubyracer'

バンドルすべきgemパッケージをインストール

1
$ bundle intall

新規にrailsアプリが生成されたことを確認し、config/database.ymlのユーザ名を’postgres’に書き換える

scaffoldを行う

1
$ rails g scaffold user name:string age:integer

データベースを作成した後、migrationを行う

1
2
$ rake db:create
$ rake db:migrate

migrationを行った後、WEBrickを起動させ、ブラウザでアプリの挙動を確認する

1
$ rails server

参考:
http://honana.com/postgresql/82/setting.html http://d.hatena.ne.jp/f_world21/20110601/1306944597


5-2. [補足追加] Rails3における諸オペレーション

既存テーブルへのフィールド追加マイグレーション

例)> rails g migration AddDate_of_issueToReceipts date_of_issue:date 文法)> rails g migration Add[追加したいカラム名]To[追加先のテーブル名] カラム名:データ型

1
$ rails g migration AddPriceToProduct price:decimal

5-3. [補足追加] Ruby1.9 においてマルチバイト文字を扱うためのマジックコメント

Ryby1.9 においてコード中で日本語を扱う場合は、ファイルの先頭に以下のマジックコードを付加すること

1
# encoding: utf-8

5-4. [補足追加] .rvmrc

.rvmrcの設定をrailsプロジェクトのルートに置いておくこと

設定例)

rvm use 1.9.3@rails32


6. pry導入

pryはruby用高機能対話環境であり、一連の関連コンポネントは機能的にirb及びruby-debugを置換するものである

Gemfileへの追記内容

下記の内、コンポネント「pry-nav」がruby-debugと同機能のデバッガである

1
2
3
4
5
6
7
8
9
source 'http://rubygems.org'

group :development do
  gem 'pry-rails'
  # gem 'pry-coolline', :git => 'git://github.com/pry/pry-coolline.git'
  gem 'pry-nav'
  gem 'pry-exception_explorer'
  gem 'hirb-unicode'
end

.pryrcの内容

レコードセットを見易くするコンポネント「Hirb」の初期設定等を行う

1
2
3
4
5
6
7
8
9
# https://github.com/pry/pry/wiki/FAQ#wiki-hirb
require 'hirb'

Hirb.enable

old_print = Pry.config.print
Pry.config.print = proc do |output, value|
  Hirb::View.view_or_page_output(value) || old_print.call(output, value)
end

参考:
http://labs.timedia.co.jp/2011/12/rubyist-should-use-pry.html http://m4i.hatenablog.com/entry/2012/02/22/091501 http://blog.kiftwi.net/2012/03/20/summary-of-pry-plugins/ http://qiita.com/items/9f7c6b68688e11e962b9
http://d.hatena.ne.jp/joker1007/


7. RSpec(rails3.1以降の場合)

Gemfileに下記を追記する

1
gem 'rspec-rails'

プロジェクトへrspecを適用する

1
# rails g rspec:install

導入方法は以上

参考:
http://ginpen.com/2012/02/14/rspec-rails/


8. git導入

1
$ sudo aptitude install git

ruby1.9-rails3-introduction

【Ruby1.9系/Rails3導入覚書】2012/03/18~


0. 対象環境

OS:Debian 6.0 / 64bit版

以下でネットワーク経路確認

1
$ netstat -r

カーネルIP経路テーブル

1
2
3
4
受信先サイト    ゲートウェイ    ネットマスク   フラグ   MSS Window  irtt インタフェース
10.0.2.0       *            255.255.255.0   U       0   0       0    eth0
192.168.56.0   *            255.255.255.0   U       0   0       0    eth1
default        10.0.2.2     0.0.0.0         UG      0   0       0    eth0

1. MySQL 導入

以下、root権限で実行

1
# aptitude -y install mysql-server

バージョン:5.1.61

また、libmysqlclient-dev が導入済であることを確認する

1
# aptitude search libmysqlclient-dev

参考:
http://pentan.info/server/linux/mysql.html#debianins http://d.hatena.ne.jp/yyuto/20110829/1314582372


2. RVM 導入

curlを導入

root権限で以下を実行

1
# aptitude -y install curl

RVM 導入

ユーザに戻って以下を実行

1
$ bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)

バージョン:1.10.3

rvm を最新に更新する

1
$ rvm get head

アップデートしたrvmの再読み込み

1
$ rvm reload

インストール可能なRuby実装の一覧を見る

1
$ rvm list known

インストール済パッケージリスト

1
$ rvm list

参考:
https://rvm.beginrescueend.com/releases/rvm-install-head http://qwik.jp/asakusarb/rvm.html


3. ruby 1.9.3 導入

[準備]

root権限で g++ をインストール

1
# aptitude -y install g++

root権限で automake をインストール

バージョン:1.11.1

1
# aptitude -y install automake

root権限で libreadline6-dev をインストール

1
# aptitude -y install libreadline6-dev

root権限で zlib1g-dev をインストール

1
# aptitude -y install zlib1g-dev

root権限で libssl-dev をインストール

1
# aptitude -y install libssl-dev

[本体] – ruby 1.9.3 をインストール – ruby1.9系をインストールすることで、同時にrubygemsもインストールできる

1
$ rvm install 1.9.3

~/.bashrc に以下の行を追加

1
$ [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # This loads RVM

規定バージョン設定 例)ruby1.9.3 を規定バージョンとして設定する

1
$ rvm use 1.9.3 --default

rubygemsのバージョン確認

1
2
$ gem -v
1.8.21

root権限で ruby-dev をインストール

1
# aptitude -y install ruby-dev

参考:
http://nzwsch.info/
http://d.hatena.ne.jp/shokai/20101115/1289818334


4. 動作確認用rails3アプリ作成/動作確認

コントローラを追加して動作確認

1
$ rails generate controller <コントローラ名> <アクション名>

例)

1
$ rails generate controller hello index

以下のURLへアクセスし、railsアプリ/コントローラの動作確認を行う

http://192.168.56.101:3000/hello/index/

scaffold作成例

1
2
3
4
$ rails g scaffold user name:string age:integer
$ rake db:create
$ rake db:migrate
$ rails server

以下のURLへアクセスし、MySQLとの連携が正常か動作確認を行う

http://192.168.56.101:3000/users/

routes.rbで定義したルートを表示

1
$ rake routes

railsアプリ統計情報を表示

1
$ rake stats

参考:
http://opentechnica.blogspot.jp/2012/01/ubuntu1110ruby-192-rails-32.html http://d.hatena.ne.jp/InvokeTwoA/20111007

— Ruby1.9系/Rails3導入手順ここまで —

Centos-on-virtualbox

【CentOS5.5環境】

  • 一般

    OSバージョン : CentOS 5.5
    OSタイプ : Red Hat (64 bit)

  • システム

    メインメモリ : 512 MB
    起動順序 : フロッピー, CD/DVD-ROM, ハードディスク
    VT-x/AMD-V : 有効
    ネステッドページング : 有効

  • ディスプレイ

    ビデオメモリ : 12 MB
    3Dアクセラレーション : 無効
    2Dビデオ アクセラレーション : 無効
    リモートディスプレイ サーバー : 無効

  • ストレージ

    IDE コントローラ : IDE セカンダリ マスター (CD/DVD):空
    SATA コントローラ : SATA ポート 0:CentOS 5.5.vdi (標準, 8.00 GB)

  • オーディオ

    ホスト ドライバ : Windows DirectSound
    コントローラ : ICH AC97

  • ネットワーク

    アダプタ 1 : Intel PRO/1000 MT Desktop (NAT)
    アダプタ 2 : Intel PRO/1000 MT Desktop (ホストオンリー アダプタ, ‘VirtualBox Host-Only Ethernet Adapter’)

  • シリアルポート

    無効

  • USB

    デバイス フィルタ:0 (0 アクティブ)

  • 共有フォルダ

    なし

  • デフォルトゲートウェイについて

1
2
3
4
5
6
7
[Philippos@localhost ~]$ netstat --route
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
10.0.2.0        *               255.255.255.0   U         0 0          0 eth0
192.168.56.0    *               255.255.255.0   U         0 0          0 eth1
169.254.0.0     *               255.255.0.0     U         0 0          0 eth1
default         10.0.2.2        0.0.0.0         UG        0 0          0 eth0

※ネットワーク経路を調べもし default が複数あった場合はデフォルトゲートウェイが競合しているので、デフォルトゲートウェイがひとつになるように設定し直すこと。

  • 補追(2012/04/3)

    以下のように設定し直した
    • eth0 : IPをDHCPによる自動割り当てではなく、固定に変更。またデフォルトゲートウェイも新たに設定
    • eth1 : デフォルトゲートウェイの設定を削除

以上の設定変更を行い、ホストオンリーアダプタ並びにNAT設定が反映されたことを確認済

  • 共有フォルダのマウント

ホストOS(Windows7)の C:\share を共有フォルダとして、ゲストOS(CentOS5)側においてroot権限で以下のようにマウントする

1
# mount -t vboxsf share /mnt/share

About-virtualbox

VirtualBoxメモ(2011/04/07~)

VirtualBoxのネットワーク設定に関して……

ver : VirtualBox-4.2.12-84980-Win

アダプター1 : NAT

ゲスト OS からインターネットへ接続する

アダプター2 : ホストオンリーアダプタ

ホスト OS と ゲスト OS 間のネットワーク

ホストOS側の設定

VirtualBox用のローカルエリア接続の設定

IPアドレス : 192.168.56.1
サブネットマスク : 255.255.255.0
デフォルトゲートウェイ : 192.168.56.0

ゲストOS側の設定

OS:Debian 6.0 / 64bit版

以下でネットワーク経路確認

1
$ netstat -r
カーネルIP経路テーブル
1
2
3
4
受信先サイト    ゲートウェイ    ネットマスク   フラグ   MSS Window  irtt インタフェース
10.0.2.0       *            255.255.255.0   U       0   0       0    eth0
192.168.56.0   *            255.255.255.0   U       0   0       0    eth1
default        10.0.2.2     0.0.0.0         UG      0   0       0    eth0

参考サイト:

VirtualBox内のUbuntu にssh ,httpでアクセス
VirtualBox + CentOS でローカル開発環境を作る

共有フォルダ設定

ディレクトリ/mnt/shareを作成し、「/etc/rc.local」に以下を追加

1
mount -t vboxsf share /mnt/share

※VirtualBox補追(2013/12/15)

■ディスク容量拡張メモ

ストレージ領域拡張

ホストOS(Windows7)にてMS-DOS上で以下のようにストレージ領域を拡張

1
2
C:\Users\Philippos\VirtualBox VMs\squeeze 64bit 20131215001>"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" modifyhd  "squeeze 64bit 20131215001.vdi" --resize 102400
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

GPartedによるパーティーション再設定

CD-ROMにGPartedのイメージファイル(gparted-live-0.16.2-11-i486)をマウントし、ゲストOS(sqeeze64bit)を起動させる。 GPartedが起動するので、パーティーションを再設定する GPartedのイメージファイルは公式サイトより入手。

http://gparted.sourceforge.net/download.php

ディスク容量確認

ゲストOS上にてディスク容量確認

1
2
3
4
5
6
7
$ df -h

Filesystem            Size  Used Avail Use% マウント位置
/dev/sda1              12G  7.0G  4.3G  63% /
tmpfs                 502M     0  502M   0% /lib/init/rw
udev                  497M  176K  497M   1% /dev
tmpfs                 502M     0  502M   0% /dev/shm

■参考サイト:

http://dust-memorys.blogspot.jp/2013/02/virtual-box.html
http://www.natzworks.com/digital/2011/489.html
http://tesiri.hateblo.jp/entry/2013/11/26/203400
http://hanagurotanuki.blogspot.jp/2009/04/gparted.html
http://www.bitgram.net/blog/archives/1777

Octopress-on-github

[octopress on github 導入手順と使用方法] 2013/06/22~

  • 導入

1
2
3
4
$ git clone git://github.com/imathis/octopress.git octopress
$ cd octopress
$ bundle install
$ rake install
  • テーマの変更

1
2
$ git clone https://github.com/wallace/justin-kelly-theme.git .themes/justin-kelly
$ rake install['justin-kelly']
  • 初期設定

1
$ rake setup_github_pages

Enter the read/write url for your repository: [リポジトリURI]

  • 記事の投稿

以下でファイル(source/_posts/YYYY-mm-DD-test-post.markdown)を作成し、それを編集する。

1
$ rake new_post['new issue']
  • ページの新設

1
$ rake new_page['new-page']
  • 記事の生成

1
$ rake generate
  • ローカルでのプレビュー

1
$ rake preview

以下へアクセス http://localhost:4000/

  • デプロイ

1
2
$ rake generate
$ rake deploy

もしくは

1
$ rake gen_deploy
  • その他

たまにキャッシュを削除すること

1
$ rake clean

上記は以下と等価

1
$ rm -rf .pygments-cache/** .gist-cache/** .sass-cache/** source/stylesheets/screen.css

git も以下で最適化

1
$ git gc

以上


■追補

次のように記事の投稿に失敗した場合は、rakeコマンドのエイリアスを設定すること。

1
2
3
4
$ rake new_post['new issue']
zsh: no matches found: new_post['new issue']

$ alias rake="noglob rake"

参考サイト:
http://ackintosh.github.io/blog/2013/02/02/cant-create-post/
https://github.com/imathis/octopress/issues/117