はじめに
今回の投稿は、主にVim
とSublimeText2
に関する投稿です。ちなみに、SublimeText2
はコマンドラインで使えるわけではないのですが...。
コマンドラインで使用しているツールを簡単にではありますが、まとめてみようと思います。前回の続きです。私が知らない便利ツールはまだまだたくさんありますので、ここに掲載されているもの以外で便利なものがあれば、ぜひ教えてください。
この記事に貼り付けてあるリンクは、キーワードに関連する適切な場所へと誘導してくれます。非常に有効なので、ぜひ参照してみてください。
バックナンバー
Command Line で使用しているツールまとめ vol.1
Command Line で使用しているツールまとめ vol.2
Command Line で使用しているツールまとめ vol.3
Command Line で使用しているツールまとめ vol.4
Command Line で使用しているツールまとめ vol.5
Command Line で使用しているツールまとめ vol.6
Vim
vim-submode
vim-submodeというプラグインがあります。これを使用することで、連続で入力したいコマンドがかなり使いやすくなります。例えば、ウィンドウサイズの変更です。
インストールには、neobundle.vimを使用します。filetype plugin indent on
の上にNeoBundle 'kana/vim-submode'
と記述してください。
filetype off
if has('vim_starting')
set runtimepath+=~/.vim/bundle/neobundle.vim
call neobundle#rc(expand('~/.vim/bundle/'))
endif
" プラグイン
NeoBundle 'kana/vim-submode'
filetype plugin indent on " required!
そして、:NeoBundleInstall
コマンドを実行します。以下、この手順については省略します。
そして、設定ファイルは以下のように書きます。
" submode.vim
" http://d.hatena.ne.jp/thinca/20130131/1359567419
" ウィンドウサイズの変更キーを簡易化する
" [C-w],[+]または、[C-w],[-]
call submode#enter_with('winsize', 'n', '', '<C-w>>', '<C-w>>')
call submode#enter_with('winsize', 'n', '', '<C-w><', '<C-w><')
call submode#enter_with('winsize', 'n', '', '<C-w>+', '<C-w>-')
call submode#enter_with('winsize', 'n', '', '<C-w>-', '<C-w>+')
call submode#map('winsize', 'n', '', '>', '<C-w>>')
call submode#map('winsize', 'n', '', '<', '<C-w><')
call submode#map('winsize', 'n', '', '+', '<C-w>-')
call submode#map('winsize', 'n', '', '-', '<C-w>+')
これで、C-w
,+
…を押すと、サイズを拡大でき、C-w
,-
…を押すと、サイズを縮小できます。ちなみに、ここでの…
の部分は、その前に記述したキーの連続押しを意味します。
YankRing.vim
YankRing.vim
は、ヤンク履歴を参照できるようにするプラグインです。
NeoBundle 'YankRing.vim'
" YankRing.vim
" [,],[y]でヤンク履歴
" http://nanasi.jp/articles/vim/yankring_vim.html
" https://github.com/yuroyoro/dotfiles/blob/master/.vimrc.plugins_setting
nmap ,y :YRShow<CR>
ちなみに、クリップボードを共有したい場合は、以下のように書きます。この設定がないと YankRing.vim が動かないことがあるようです。
" クリップボード共有
" http://vim-users.jp/2010/02/hack126/
set clipboard+=unnamedplus,unnamed
undotree.vim
undotree.vim
は、やり直し履歴を分かりやすく表示し、かつ、いくつか前のやり直しであっても、すぐに開くことが出来るようにするプラグインです。
NeoBundle 'mbbill/undotree'
私は以下のように設定し、 <Leader>u
で開けるようにしています。
" undotree.vim
" [?]でヘルプ。[¥],[u]でundo履歴
" http://vimblog.com/blog/2012/09/02/undotree-dot-vim-display-your-undo-history-in-a-graph/
" https://github.com/r1chelt/dotfiles/blob/master/.vimrc
nmap <Leader>u :UndotreeToggle<CR>
let g:undotree_SetFocusWhenToggle = 1
let g:undotree_SplitLocation = 'topleft'
let g:undotree_SplitWidth = 35
let g:undotree_diffAutoOpen = 1
let g:undotree_diffpanelHeight = 25
let g:undotree_RelativeTimestamp = 1
let g:undotree_TreeNodeShape = '*'
let g:undotree_HighlightChangedText = 1
let g:undotree_HighlightSyntax = "UnderLined"
easybuffer.vim
easybuffer.vim
は、バッファ一覧を表示し、ショートカットですぐに開けるようにしてくれるプラグインです。その他、詳細情報も表示してくれるので、わかりやすいと思います。
NeoBundle 'troydm/easybuffer.vim'
:EasyBuffer
を実行します。
DirDo.vim
DirDo.vim
は、argdo
の拡張のようなものです。ここで、argdo
とは、何かのコマンドを一括実行したいときに使います。例えば、以下のようにすると、フォルダ内にある.rb
ファイルの特定のキーワードhoge
を特定のキーワードhoge
に変換することができます。
:argadd *.rb
:argdo %s/hoge/hehe/g | update
しかし、フォルダを指定することはできません。そこで、DirDo.vim
の出番です。
NeoBundle 'vim-scripts/DirDo.vim'
以下のようにすることで、フォルダを指定して、一括コマンドを実行出来ます。
:DDD app/controllers
:DDP *.rb
:DDO :%s/hoge/hoge/g | update
ここでは、app/controllers
フォルダを指定しています。
switch.vim
switch.vim
を使えば、特定の文字列をキーひとつで入れ替えることができます。例えば、true
をfalse
を変換したりということができます。
NeoBundle 'AndrewRadev/switch.vim'
例えば、設定ファイルに以下を追記します。
" switch.vim
" http://www.vimninjas.com/2012/09/12/switch/
let g:variable_style_switch_definitions = [
\ {
\ 'f': {
\ 'foo': 'bar'
\ },
\
\ 'b': {
\ 'bar': 'foo'
\ },
\ }
\ ]
nnoremap + :call switch#Switch(g:variable_style_switch_definitions)<cr>
nnoremap - :Switch<cr>
すると、 fooの fの部分にカーソルが乗っている状態で +を押すと、 fooが barに切り替わります。そして、繰り返し +を押すと元に戻ります。これは、 barの bの位置にカーソルが乗っているからです。
上の例を見てもわかるように、このプラグインは、様々な使い方ができます。そして、 :Switch
を使う場合は、例えば、 true
などの上で -
を押します。すると、文字列が false
に変換されたと思います。
似たようなプラグインには以下のようなものがあります。
vim-easymotion
vim-easymotion
を使うことで強調されたアルファベットを入力すると移動出来ます。
NeoBundle 'Lokaltog/vim-easymotion'
私は、以下の様な設定にしています。 ;
+ j,k,w,b
などの移動キーで発動します。続けて、強調されたアルファベットを入力すると移動出来ます。
" Lokaltog/vim-easymotion
" http://blog.remora.cx/2012/08/vim-easymotion.html
" ホームポジションに近いキーを使う
let g:EasyMotion_keys='hjklasdfgyuiopqwertnmzxcvbHJKLASDFGYUIOPQWERTNMZXCVB'
" 「;」 + 何かにマッピング
let g:EasyMotion_leader_key=";"
" 1 ストローク選択を優先する
let g:EasyMotion_grouping=1
" カラー設定変更
hi EasyMotionTarget ctermbg=none ctermfg=red
hi EasyMotionShade ctermbg=none ctermfg=blue
clever-f.vim
clever-f.vim
は検索移動を簡単にするためのプラグインです。f
を押したあと、検索したい1文字を入力し、続いて f
を押します。
NeoBundle 'rhysd/clever-f.vim'
vim-seek
vim-seek
も同じく検索移動を簡単にするためのプラグインです。clever-f.vim
との違いは、2文字検索できる点です。
NeoBundle 'goldfeld/vim-seek'
使い方は簡単で、 s
で検索を開始します。ここで検索したい2文字を入力します。 S
で前の行を検索します。
visualmark.vim
visualmark.vim
は、マークした行へジャンプすることができるプラグインです。もちろん、Vimの基本機能としてできることですが、このプラグインを使うと、マークした行がハイライトされます。
wget --no-check-certificate https://raw.github.com/taku-o/downloads/master/visualmark.vim
mv visualmark.vim ~/.vim/plugin/
私は、以下の様なキーマップを設定しています。
" visualmark.vim
" http://nanasi.jp/articles/vim/visualmark_vim.html
map <unique> <F3> <Plug>Vm_toggle_sign
map <silent> <unique> mm <Plug>Vm_toggle_sign
これで、 F3を押すと、マークができます。そして、 F2を押すと、マークした場所に移動できます。
ちなみに、当該プラグインが使えない場合は、 vim --version | grep +signsを実行してみて、+signsとなっていない場合は、コンパイルが必要になります。
sudo port clean vim
sudo port install vim +signs
colorscheme
Vimは、背景色や文字色などをカラースキームで一括設定出来ます。おすすめのカラースキームは、以下のようになっています。
NeoBundle 'tomasr/molokai'
NeoBundle 'nanotech/jellybeans.vim'
NeoBundle 'altercation/solarized'
NeoBundle 'vim-scripts/newspaper.vim'
設定ファイルに以下を追記します。
" カラースキームを指定する
colorscheme molokai
" あらかじめ用意されたカラースキームを使用する
" colorscheme evening
" 背景色の傾向
set background=dark
" ハイライト on
syntax enable
unite-colorscheme
を使うことで、簡単にカラースキームを切り替えることができます。
NeoBundle 'ujihisa/unite-colorscheme'
設定ファイルに以下を追記することで、 \
+uc
でカラースキームを簡単に選べるようになります。
" カラースキームの切り替えを簡単にする
" http://inputxoutput.com/vim-advent-calendar-2012/
nnoremap <Leader>uc :<C-u>Unite colorscheme -auto-preview<CR>
ここで、カラースキームを変更することで、neocomplcache'
の補完が読み取りにくくなる場合があります。この場合、以下の様な設定を行うと、分かりやすくなります。
" 補完候補の色づけ for vim7
" https://github.com/yuroyoro/dotfiles/blob/master/.vimrc.colors
hi Pmenu ctermbg=255 ctermfg=0 guifg=#000000 guibg=#999999
hi PmenuSel ctermbg=blue ctermfg=black
hi PmenuSbar ctermbg=0 ctermfg=9
hi PmenuSbar ctermbg=255 ctermfg=0 guifg=#000000 guibg=#FFFFFF
surround.vim
surround.vim
では、囲んでいる括弧を削除したり、文字列をかっこで囲むことができます。詳しくは、こちらの記事を参考にしてください。
NeoBundle 'tpope/vim-surround.git'
ちなみに、Vimの標準機能では、以下の様な編集が可能です。
HTML タグがあったとします。
この場合、通常の機能では、
dat
でタグ全体を消したり、
dit
でタグで囲まれた部分を消したりすることができます。
ちなみに、先頭の「d」はデリートですので、「y」とするとヤンク、「c」とするとチェンジすることもできます。
私のVimのF1~F6までのキーマップ
" F1でヘルプ
" F2でvisualmark.vimのマーク移動
" F3でvisualmark.vimのマーク設定
map <unique> <F3> <Plug>Vm_toggle_sign
map <silent> <unique> mm <Plug>Vm_toggle_sign
" F4で前のバッファ
map <F4> <ESC>:bp<CR>
" F5で次のバッファ
map <F5> <ESC>:bn<CR>
" F6でバッファを削除する
map <F6> <ESC>:bnext \| bdelete #<CR>
command! Bw :bnext \| bdelete #
Vimで番号を順番につける方法
以下の設定ファイルを書き、 数字を選択したあと、 ?coとします。ちなみに、?
には数字が入ります。
" 数字を選択し、[?],[co]で数字順に変換する
" https://sites.google.com/site/fudist/Home/vim-nihongo-ban/tips
nnoremap <silent> co :ContinuousNumber <C-a><CR>
vnoremap <silent> co :ContinuousNumber <C-a><CR>
command! -count -nargs=1 ContinuousNumber let c = col('.')|for n in range(1, <count>?<count>-line('.'):1)|exec 'normal! j' . n . <q-args>|call cursor('.', c)|endfor
また、先頭が0でも10進数として扱うには、設定ファイルに以下を書きます。
" 先頭が0でも10進数として扱う
" http://www15.ocn.ne.jp/~tusr/vim/vim_text2.html
set nrformats-=octal
SublimeText2
Theme Phoenix
Sublime Text2(以下、st2)のテーマには、Phoenixというものがあります。私は、このテーマを愛用しています。
パッケージコントロールのインストールから theme phoenix
とでも検索し、当該テーマをインストールしたあと、以下を設定ファイルに書き込みます。
{
"theme": "Phoenix Dark.sublime-theme"
}
Brewser Refresh
Sublime Text2 で Markdown Preview する時などは、Brewser Refresh が便利です。ブラウザのリロードがキーで行えます。
インストーラーの検索で brewser refresh
を検索して、インストールします。いちいち Cmd
+Shift
+p
を押して、 install
と入力し、 Enterで検索をかけるのが面倒な方は、以下を設定しておきます。
[
{ "keys": ["super+alt+p"], "command": "show_overlay", "args": { "overlay": "command_palette", "text": "install"}}
]
この設定で、Cmd
+Alt
+p
でinstall
を入力した状態でインストーラーが開きます。
そして、設定ファイルに以下を記述します。
[
{
"keys": ["command+shift+r"], "command": "browser_refresh", "args": {
"auto_save": true,
"delay": 0.5,
"activate_browser": true,
"browser_name" : "Google Chrome"
}
}
]
これで、 Cmd
+Shift
+r
を押せば、ブラウザを更新出来ます。