LoginSignup
117
120

More than 5 years have passed since last update.

Vim入門記

Last updated at Posted at 2013-10-29

私はこれまでろくに.vimrcの設定もろくにやったことがないような薄っぺらい人間でした。
以前の記事で唐突にNeoBundleおよびRuby関連プラグインの導入について述べたのですが、そもそも見よう見まねで何も分かってないので有効活用できてませんでした (当然ですね)。

この記事ではイチから真面目にメモしたいと思います。
記述に間違い等ありましたら教えていただければ幸いです。

目標 (2013 秋)

現時点で一応の動作確認はできています。

  1. 基本の.vimrc設定を行って(自分が)使いやすい環境に (この記事で記述)
  2. 外部プラグインの導入
    • NeoBundleによるプラグイン管理 (この記事で記述)
    • Markdown記法を利用してシンタックスハイライト、ブラウザプレビュー。こちらの記事参照
    • NeoComplCacheとNeoSnippetを使って便利に補完
    • TBD...
  3. Vimの日本語IME(挿入モード抜けるときにオフりたい)をキーリマップツールを使って何とかする
  4. これらの設定を(恥を忍んで)GitHubの公開リポジトリで管理 (この記事で記述)

--

それではやっていきます。

GitHubリポジトリ作成

まずは入れ物を作ってしまいたいと思います。

公開リポジトリ作成まで

上記サイト様に全て書いてあります。
以下の手順をこなします。

  1. GitHubアカウント登録
  2. SSH公開鍵設定
  3. 公開リポジトリの作成 (以下ではdotfilesという名前にしています)

.vimrcを作業ツリーへ

上記で作成したdotfilesを作業PC上にクローンしてきます。

$ git clone https://youraccount/dotfiles

今後.vimrcをdotfilesで管理するため、ホームから移動し、シンボリックリンクを貼ります。

$ cd
$ mv .vimrc path/to/dotfiles/.vimrc
$ ln -s path/to/dotfiles/.vimrc .

NeoBundleのインストール

ここでVimプラグイン管理プラグインであるNeoBundleを導入します。
こちらもdotfilesで管理しますが、外部リポジトリを参照する形になりますので$ git submoduleで追加しています。

$ cd path/to/dotfiles
$ git submodule add https://github.com/Shougo/neobundle.vim.git .vim/bundle/neobundle.vim

.vimディレクトリもホームにシンボリックリンクを貼ります。

$ cd
$ ln -s path/to/dotfiles/.vim .

.vimrcに以下を追記します。
公式のサンプルとは違っていますので、何か不具合あればご指摘いただければ幸いです。

 if has('vim_starting')
   set nocompatible               " Be iMproved
   set runtimepath+=~/.vim/bundle/neobundle.vim/
 endif

 call neobundle#rc(expand('~/.vim/bundle/'))

 " Let NeoBundle manage NeoBundle
  NeoBundleFetch 'Shougo/neobundle.vim'

  NeoBundle 'Shougo/vimproc'
  NeoBundle 'Shougo/unite.vim'

" NeoSnippets
  NeoBundle 'Shougo/neocomplcache'
  NeoBundle 'Shougo/neosnippet'

" Added For Ruby Programming
  NeoBundle 'AndrewRadev/switch.vim'
  NeoBundle 'tpope/vim-endwise'

 filetype plugin indent on     " Required!
 NeoBundleCheck

ちなみにProxy環境の場合は以下の行をcall文の後くらいに置いてください。httpsで繋ぎにいってくれます。
let g:neobundle_default_git_protocol='https'

編集が終わったらVimを再起動し、:NeoBundleInstallでプラグインをインストールします。
※ ちなみにNeoBundleCheckを書いておけばVim再起動時に対話的にインストールしてくれます(知りませんでした)。

なお、今後必要ないプラグインができた場合は.vimrcから削除後に:NeoBundleCleanで削除できます。

.gitignoreの記述

こうしてNeoBundleでインストールしたプラグインは.vim/bundle以下に配置されます(上記でそう指定しました)。
$ git submoduleで追加したneobundle以外は、dotfiles/.gitignoreでリポジトリの管理対象外にしておきます。

.vim/bundle/*
!.vim/bundle/neobundle.vim

リモートリポジトリにpush

ここまでで一旦区切りを付けます。
作業ツリーをステージング(add) -> 変更の確定(commit) -> リモートリポジトリにpush、という流れでGitHubに持っていきます。

$ cd path/to/dotfiles
$ git add .
$ git commit -m 'my first commit'
$ git push

準備は以上です。


基本の.vimrc設定

それでは.vimrcの設定をやっていきます。
この間のようにいきなり背伸びした真似はせずに、バニラでできる設定をコツコツとやっていきます。

現時点では以下の設定を行っています(自分がやりやすいように、がテーマ)。
そのほかの設定項目はこのサイトがとても参考になると思います。
同サイトのTipsページにもお世話になりっぱなしです。

:setパラメータ一覧

設定項目 My設定値 設定内容の説明
nocompatible - Vi互換を切る(便利機能を使いたい)
encoding utf-8 内部エンコーディングをUTF-8に指定
fileencodings iso-2022-jp,utf-8,cp932,sjis,euc-jp ファイルの文字エンコード定義(前方から適用、エラーがないものを採用)
number - 行番号を表示
backspace indent,eol,start backspaceキーの挙動。インデント、改行記号、行頭文字を削除可能に
tabstop 4 <TAB>押下時のインデント幅
clipboard unnamed クリップボードを使う
ruler - 何行目の何列目かを表示
wrap - ウインドウより長い行を折り返して表示
list - 不可視文字を表示
listchars trail:-,tab:>- listがonの時に使う文字を指定(trail:行末のスペース、tabはタブ。他にもあり)
smartindent - 現在のインデント幅を維持
showmatch - カッコ記号の対応するものをハイライト
whichwrap b,s,<,> カーソルを行頭/行末で止まらないように(b:backspaceキー,s:spaceキー,<は左、>は右キー)
textwidth 0 自動改行無効
laststatus 2 ステータスラインを常に表示
statusline 表外参照 ステータスラインの書式を指定
ignorecase - 検索時に大文字、小文字を区別しない
smartcase - 検索時に大文字が指定された場合のみ区別して検索
nowrapscan - 下まで検索したら最初に戻らない
hlsearch - 検索結果をハイライトする
wildmode list,null <TAB>キーによるコマンドライン補完設定
noswapfile - スワップファイルを作らない
backupdir $HOME/.vimbackup バックアップファイルを保管するディレクトリを指定

ステータスラインの表示設定

このページを参考にさせていただきました、というかマネさせていただきました。

set statusline=%<%f\ %m%r%h%w
set statusline+=%{'['.(&fenc!=''?&fenc:&enc).']['.&fileformat.']'}
set statusline+=%=%l/%L,%c%V%8P

Cygwin向けマッピング

CygwinのVimは+clipboardではないので、ヤンクした文字列を:cbコマンドでクリップボードに貼り付けられるようにマッピングしました。
Mac向けには以前別の記事を書きました。

noremap :cb :w !cat > /dev/clipboard

追記: 追加プラグインによる対処
上記のコピペはバッファ全体しかコピーできないので現在は追加プラグインのfakeclipで*レジスタとのやりとりを行っています。

.vimrc
NeoBundle 'kana/vim-fakeclip'
vmap ,y "*y
nmap ,p "*p

:source ~/.vimrcで反映しましょう(NeoBundleCheckが有効ならそのままインストールしてくれます)。
これでypでクリップボードへのコピペが有効になります。

変更をリモートリポジトリにpush

変更したら初回push時と同様、 addして作業ツリーをステージング -> commitで作業ツリーの変更内容を確定 -> pushでリモートリポジトリにpushすることができます。

今後は…

今後新しい環境に移行しても、落ち着いてこのリポジトリをクローンし、.vimディレクトリと.vimrcのシンボリックリンクを貼ればマイセッティング済になります。(もっと良いやり方があるかもしれませんが…)

追記: Submoduleの導入手順を忘れてました。

$ cd path/to/dotfiles
$ git submodule init
$ git submodule update

以上になります。だんだん便利になってくるのが嬉しいです。
今後メンテすることがあったら適宜追記していきたいと思います。

117
120
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
117
120