vim7では複数ファイルをタブ表示できるようになりましたが、新しい機能なのでイマイチ分からない部分があります。:helpすればいいじゃん。うん。そなんですけどね。
軽くまとめたサイトがあったので( ..)φメモメモ。
vimが開いている状態で、新しくタブにファイルを開く場合は以下。filenameというファイルを開く場合。
:tabnew filename
コマンドラインから、複数ファイルを複数タブの表示として開く場合は以下のような感じ。file1, file2, file3を同時に開く。
vim -p file1 file2 file3
同時タブ表示数は元々10タブが最大値(上限値)だが、それを.vimrc等の設定ファイルに以下設定値を記載する事で変更する事が出来る。
set tabpagemax=15
上記のタブ最大値を超えたタブを開いた場合は:nextや:last等で表示されていないタブへの移動をする事で観ることが出来る。
:tabfはファイル名を柔軟に指定する事が出来るようになる。例えば「inventory.txt」というファイルを開きたい場合は以下のように指定できる。
:tabf inven*
ただ、複数ファイルが合致した場合でその数が多すぎる場合はvim側で文句を言ってきます。
表示タブの切り替えは:tabn(tab nextの略かな) もしくは :tabp (tab previousの略かな)で切り替えることが出来ます。また、gtにても切り替え可能。
その他、表示されているタブの最初と最後への移動は、:tabfirst, :tabfir(最初)、:tablastのコマンドで移動が出来る。
タブバー(タブの表示)は元々編集画面の上に位置しているが最初からタブバーを表示させたい場合は.vimrc等設定ファイルに以下を追加する。まったく表示しなくて良いならば「0」を設定する。
set showtabline=2
タブバーの表示を無くした時などでタブ自体が視覚的に見えない場合でも、現状のタブの開いている状態を見るには:tabsコマンドを使うと開いているファイル一覧をみる事が出来る。
タブを開く際にコマンドを毎回打つのが面倒な場合は以下のような設定でショートカットを実現できる。この例の場合「,t」で新しくタブを開くようになる。(参照 : Vim tips: Using Vim mappings and abbreviations)
imap ,t :tabnew
タブの表示位置を変更したい場合は :tabm n を利用する。nは左からの数で0が始まりである(3番目に持って行きたい場合は4を設定する)。以下の例ではカレントタブを左から2番目にもってきている。
:tabm 1
複数タブ(ファイル)を開いている場合、その開いているタブ全体に置換をする場合は以下のような例になる。ここではfooという文字列をbarという文字列に置換する作業を開いているタブ全体に適用している。
:tabdo %s/foo/bar/g
感想 : 複数タブ内置換・・・便利だ。
いままでVimもEmacsも両方使っていました。プログラミングとかする時はEmacsとかに統一してもいいかもなぁと思ったりしますが、Vimを使い続けている理由の一つに「折りたたみ機能(fold)」があって、多機能ではないもののなんという規模が丁度良いというか…。要するに快適だったわけです。
見通しがかなり良くなるのと編集と折りたたみが同時に出来るような感覚であまり邪魔な感じがしない。それがEmacsにはいまいち軽い折りたたみ機能がなくてずっと探してたら見つけましたよ、Vimっぽいのを ;-)
Emacs Lisp拡張で「folding.el」。シンタックスを見てもVimっぽいのが欲しかった人が作ったように予想できて、本当に探していたものピッタリだよ!とちょっと感動したりして。
さて、インストールですがパスの通ってる場所に上記folding.elを入れて、.emacsに以下を追加する。
;; 折り畳み(folding.el) (autoload ‘folding-mode “folding” “Folding mode” t) (autoload ‘turn-off-folding-mode “folding” “Folding mode” t) (autoload ‘turn-on-folding-mode “folding” “Folding mode” t) ;; @ ~ とかがめんどいので で。 (setq folding-mode-prefix-key “\C-c”)
後は開いたファイルで「M-x folding-mode」とするだけ。後は「Emacsで折りたたみを行うfolding.el」に詳しく書いてありますです。
これでVimとEmacsの使用度が今まで8:2位だったのがおんなじ位になりそうだなぁー。Lisp勉強したかったからEmacs度をちょっと上げたいなと思っていたのでこれは個人的にかなり嬉しい。
vim7がリリースされ、使っているうちにだんだんとvim7じゃないと辛い身体になりつつあります。omni補完(omni-completion)とタブ表示が便利。
omni補完はある程度入力すると左のような候補リストが出てきてその候補から選んでいくと言うもの。右の例ではPHPのソースを「str」と打ってからomni補完を起動している(str_replaceとか表示されてる)。
omni補完は入力モード中にある程度入力してから「Ctrl-x」をしてから「Ctrl-o」をすると起動できる。さてその起動を「Tab」キーをクリックするだけで表示させようというTipsの紹介です。
以下のようなコードをvimrcやgvimrcで設定すると実現可能らしい。うーんshellチック。ステキ。
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>