読者です 読者をやめる 読者になる 読者になる

2017新卒に捧ぐ!俺のvimの設定!!

奥村です。

今回のエンジニアブログは前回に引き続き「新卒に捧ぐ!俺の〇〇」シリーズです (前回の記事はこちら↓)

blog.engineer.adways.net

第二回のテーマははタイトルの通り

「新卒に捧ぐ!俺のvimの設定」

です。

アドウェイズにはvimを採用している人が多くいます。
「これをするためにこのプラグインを入れている」や「これがあると便利」等のvimの設定をエンジニアから集めてきました。
本記事では4人のオススメvim設定を紹介します。新人vimmerは先人の設定を参考にすると良いでしょう!

それではどんどん紹介していきます。

一人目

こんにちは、井古田です。

設定1: 置換を便利に

開発やリファクタリングしている時に、変数名やメソッド名を置換したいなって思う時ありませんか?
僕はけっこうあるんですよね〜
Sublime TextやAtomでは優れた置換機能がデフォルトでありますが、
Vimだと :%s/◯◯/××/g または :%s/◯◯/××/gc を使ったりすると思います。
ただ :%s だと、置換対象の文字が分かりづらかったり、意図してない部分の文字列が置換されたりして悲しくなったりします。。

そんな時出会ったのが osyo-manga/vim-over です!

github.com

vim-over は置換対象の文字列をハイライトし、その横に変更予定の文字列を表示してくれるという優れものです。
視覚化され、一括で置換を行うことができるため、今年入ってきた新卒にVimでもかっこいい置換を披露することができます(^ ^)

設定ファイル

" ---------- 'osyo-manga/vim-over' ----------
" 全体置換
nnoremap <silent> <Space>o :OverCommandLine<CR>%s//g<Left><Left>

" 選択範囲置換
vnoremap <silent> <Space>o :OverCommandLine<CR>s//g<Left><Left>

" カーソルしたの単語置換
nnoremap sub :OverCommandLine<CR>%s/<C-r><C-w>//g<Left><Left>

実行イメージ

  • 全ての describehogefuga に置換(全体置換)

  • 選択範囲の varlet に置換(選択範囲置換)

  • カーソルしたの testMethodfugaMethod に置換(カーソルした単語変換)

二人目

こんにちは、澤藤です。

設定1:コメントアウトを楽に

開発時にはコメントアウトを結構使ったりするので毎度インサートモードに入ってからコメントを入力するのは面倒です

この設定をすることで\cと打つだけでコメントアウト出来てしまいます(複数行にも対応)

さらにファイルタイプに合わせたコメントアウトをしてくれます

‘tyru/caw.vim.git'というプラグインを使っています

github.com

設定ファイル

NeoBundle 'tyru/caw.vim.git'
" caw comment out
nmap <Leader>c <Plug>(caw:i:toggle)
vmap <Leader>c <Plug>(caw:i:toggle)

実行イメージ

  • ruby

  • html

設定2:日付、時間のショートカット

日付の入力って地味に面倒ですよね

なのでショートカットで今の日付、時間が入力できるようにしたりしています

議事録とかメモとかでも使えたりするので便利です

設定ファイル

inoremap ,todo <C-R>=strftime('%Y-%m-%d %a')<CR>
inoremap ,date <C-R>=strftime('%Y-%m-%d')<CR>
inoremap ,time <C-R>=strftime('%H:%M:%S')<CR>

実行イメージ

その他

色々プラグイン入れたり設定したりしていくとどんどん肥大化して後で見直したときに訳がわからなくなったりします

なのであらかじめファイルを分割してあげておくと後で楽になると思います

私の場合は下記のような設定をしています

  • .vimrc
" 通常設定
source ~/dotfiles/vimrc/rc/basic.vim
" プラグイン一覧
source ~/dotfiles/vimrc/rc/plugins.vim
" キーマッピング
source ~/dotfiles/vimrc/rc/mapping.vim
" タブ関連の設定
source ~/dotfiles/vimrc/rc/tab.vim
" quickhlの設定
source ~/dotfiles/vimrc/plugins/quickhl.vim
" cawの設定
source ~/dotfiles/vimrc/plugins/caw.vim
.....
.....
.....

三人目

こんにちは、清水です。

普段はRubyで開発しているエンジニアです。

使っているプラグインは40個ほどで、syntax, colorshcemeを除くと30個ほどでした。

プラグイン管理には dein.vim、ステータスバーには lightline.vim … など便利で有名なプラグインを使っています。

プラグインの入れ替えを定期的にしていて、vimawesome を探して、入れてみて手に馴染んだら残すようにしています。

設定1:カラースキーム設定

同じカラースキームでコーディングをしていると、言語によっては見づらく、目が疲れるのでよく色を変えています。

そこで設定している「さくさくカラースキーム変更」をご紹介します。

新しいカラースキームを探す時はvimcolors さんが便利です。

こちらからよさそうなカラースキームを探します。

colorschemeの変更は :colorscheme [色の名前] ですが、何度も変更するのは手間なので

unite.vimunite-colorscheme をインストールして :Unite -auto-preview colorscheme を実行すると便利です。

リアルタイムに色の変更が確認できます。

お気に入りのカラースキームがいくつか決まったら、いつでも変更できるようにします。

Hack #228: 見た目を気軽に変更する(その2) ColorRoller版 で紹介されている方法が便利です。

" color roller: "{{{
let ColorRoller = {}
let ColorRoller.colors = [
            \'default'   , 'adaryn'    , 'anotherdark' , 'solarized'   , 'moss'     ,
            \'dante'     , 'golden'    , 'ironman'     , 'jellybeans'  , 'mustang'  ,
            \'softblue'  , 'tir_black' , 'wombat256'   , 'yuroyoro256' , 'molokai'  ,
            \'desert256' , 'mrkn256'   , 'wuye'        , 'lucius'      , 'twilight' ,
            \'onedark',
            \ ]

function! ColorRoller.change()
    let color = get(self.colors, 0)
    silent exe "colorscheme " . color
    redraw
    echo self.colors
endfunction

function! ColorRoller.roll()
    let item = remove(self.colors, 0)
    call insert(self.colors, item, len(self.colors))
    call self.change()
endfunction

function! ColorRoller.unroll()
    let item = remove(self.colors, -1)
    call insert(self.colors, item, 0)
    call self.change()
endfunction
"}}}


" ColorRoller {{{
nnoremap <silent><F9> : <C-u>call ColorRoller.roll()<CR>
nnoremap <silent><F8> : <C-u>call ColorRoller.unroll()<CR>
" }}}

F9, F8 にマッピングして好きな色をいつでも交換できるようにしています。

お気に入りのカラースキームを見つけて、快適コーディングしましょー。

四人目

インフラエンジニアの渡瀬です。

設定1:vim から git を使う

vim-fugitive

Nebundleユーザーなら vimrc

NeoBundle 'tpope/vim-fugitive'

Deinの人は .vim/rc/dein.toml

[[plugins]]
repo = 'tpope/vim-fugitive'

コレだけで vim から git が呼べる様になります。

Screencasts - A complement to command line git

基本的な使い方はこちらのVim Castを見ると理解できると思います。

詳細は :help fugitive してください

使い方

基本的なコマンドだけ紹介します

:Gdiff
git diff %

diffモードで現在開いているファイルのgit diffを開きます。

この機能の為に入れている言っても過言ではないです。

:Gwrite
git add %

今開いているファイルをgit addしてくれます

:Gcommit
git commit

git commitを実行し、コミットメッセージを記述するバッファを開きます。

設定2:markdownのプレビューをみながら編集する

previm

markdownをプレビューを見ながら編集できます。

NeoBundle 'kannokanno/previm'

または

[[plugins]]
repo  = 'kannokanno/previm'
on_ft = ['markdown']

README.mkd に書いてある通り、open-browser.vimと同時に使うと便利です

設定3:markdownのテーブルをいい感じにする

markdwonを編集中にテーブルをいい感じに修正してくれる mdt というツールがあります。

markdownのテーブルは文字を編集するたびに全行を編集することになり、めんどうですよね?

これをサクッと修正してくれるとても素晴らしいツールです。

このコマンドを呼び出すには

command! -range=% Mdt :<line1>,<line2>!mdt

とするか、同じことをしているだけのmdt.vimがあります。

NeoBundle 'ywatase/mdt.vim'

設定後、テキストをvisualモードで選択して、:Mdt すればmdtがいい感じに整形してくれます。

実行イメージ

f:id:AdwaysEngineerBlog:20170414193342g:plain


いかがだったでしょうか。気になったものがあればすぐにでも試してみましょう!
vimmerへの道ははじまったばかりです。