LoginSignup
10
18

More than 5 years have passed since last update.

Vimでタブを使うのをやめた

Last updated at Posted at 2017-04-22

Vimmerです。

Vimでタブページを使うのをやめました。どうしたかというと、代わりにバッファを使い始めました。

超快適なので紹介します。

output-denite.gif

ほぼNeoVimを端末として使うためにしたこと - Qiitaの続きです。

やったこと

Deniteの導入

Shougo/denite.nvim: Dark powered asynchronous unite all interfaces for Neovim/Vim8

まじで速い。Uniteなんて使ってられない。

こんな感じでmappingしてます。

" Denite
nnoremap <Leader>p :Denite buffer file_rec<CR>
nnoremap <Leader>b :Denite buffer<CR>
call denite#custom#map('insert', "<Up>", '<denite:move_to_previous_line>', 'noremap')
call denite#custom#map('insert', "<Down>", '<denite:move_to_next_line>', 'noremap')

さすがにfile_recが入るとちょっと時間かかるので、利用は最小限にとどめています。

:set hidden

未保存の状態でバッファを切り替えても警告が出なくなります。

:wqの代わりを定義

NeoVimを端末として使うためにしたこと - Qiitaにも書いたのですが、こんな感じでやってます。

nnoremap <Leader>q :up<CR>:call CloseBuf()<CR>

<Leader>q変更があれば保存+バッファを閉じるという動作になります。

端末のバッファの名前を実行中のプロセス名を含むものに変更

端末のバッファ名ってデフォルトで全てterm://〜:/usr/bin/fishみたいな感じで、端末で実行中のプログラム名とかは入らないんですよね。これで何が困るかというと、端末を複数開くとDenite上で見分けがつかないんです。

例えば「rails server」を実行中のバッファは、railsとかでfuzzy-searchしたいので、プロセス名を入れることにします。

autocmd BufLeave * if exists('b:term_title') && exists('b:terminal_job_pid') | execute ":file term" . b:terminal_job_pid . "/" . b:term_title

fileはファイル名を変更するコマンドですが、端末なら何でも大丈夫なようです。端末のタイトルを含めているだけなので、端末の方でタイトルにプロセス名等入れてください。

PIDを入れているのは、Vimではバッファ名が被るとエラーが出てしまうようなので、ユニーク化の意味です。

こんな感じです。

Screenshot from 2017-04-22 20-41-34.png

Bufferを使うメリット

  • fuzzy-searchできる
  • タブバーがでない→かっこいい
  • Vimmerっぽい
  • file_recと組み合わせると、今開いているファイルと開いていないファイルを意識する必要がない(NERD_Treeいらない)

Bufferを使う(タブを使わない)デメリット

  • 画面分割の状態を保存できない
    • 基本的に分割せずにやるしかない
  • タイプ数が基本的に増えた
    • 自分は今のところタブよりストレスが少ないので、好みの問題の気もする

画面分割の問題については、おんなじような操作方法でBufferの代わりにタブページをfuzzy-searchするのも頑張ればできそうなので、気が向いたらやるかもしれません。


良いVim Lifeを!

10
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
18