Help us understand the problem. What is going on with this article?

Vim実践的入門初級編

More than 5 years have passed since last update.

vimライトユーザの俺が説明する実践vim初級編

  • 対象者: vim使い始めたけど、なんか使いづらくね?って人
  • 期待される成果: ソースを編集するときはvimに頼り始める。メモ帳もコレ一本

ビジュアルモードについて

ビジュアルモードはいわゆる範囲選択です。
ビジュアルモードには次の3つの選択範囲があります。

  • ビジュアルモード
  • ラインモード
  • ブロックモード

順を追って説明します。

ビジュアルモード(通常選択), v
hogehogehoge
foofoofoo
barbarbar

ラインモード(行選択), V
hogehogehoge
foofoofoo
barbarbar

ブロックモード(単形選択), C-v
hogehogehoge
foofoofoo
barbarbar

v,V,C-vはそれぞれ選択開始時の入力キーです。
C-はControlキーと他のキーの組み合わせということは入門編にて説明しました。

さて選択中にヤンク(コピー)や削除をするのはもっともらしい使い方ですが、ブロックモードには更に利用価値があります。
例えば上記したブロックモードの選択中にIを押すとインサートモードに移りますので、frstなどと入力してノーマルモードに戻ると

hogefrsthogehoge
fooffrstoofoo
barbfrstarbar

となるかと思います。
あとはブロックモード中に>でインデント下げなどもよく使用します。

慣れないうちはこの3種のビジュアルモードに頼りがちですが、熟練するにつれてブロックモード以外使う必要がなくなってきます。
といってもそれぞれに十分に利用価値があるのでがしがし利用していきましょう。

vimrcについて

vimrcとはvimの設定ファイルのことです。
通常は ~/.vimrc に置いておきます。
vimrcを含めて.~のようなドットファイルをまとめて管理したい人はdotfilesをgithubで管理をご覧ください。

さてこの設定ファイル、私はかなり小さくまとめているつもりですが333行もありました。
たかがエディタの設定に数百行も書くことあるのか!?と疑問になるでしょうが、あるんです。(しかも私はライトユーザです)
ということでオススメの設定を載せていきます。

" matchit {{{
" if や for などの文字にも%で移動できるようになる
source $VIMRUNTIME/macros/matchit.vim
let b:match_ignorecase = 1
" }}}

" usability {{{
" set t_Co=256は256色対応のターミナルソフトでのみ作用するので、Winのコマンドプロンプト使っている人などは ダブルコーテーションでコメントアウトしといて
set t_Co=256
" 色づけを on にする
syntax on
" カラースキーマを設定する。jellybeansは最初はないカラースキーマだが、次回説明するプラグインにて説明する。
"colorscheme jellybeans
" 今のところ好きなカラースキーマを使っていて大丈夫。
colorscheme desert
" ターミナルの右端で文字を折り返さない
set nowrap

" tempファイルを作らない。編集中に電源落ちまくるし、とかいう人はコメントアウトで
set noswapfile

" ハイライトサーチを有効にする。文字列検索は /word とか * ね
set hlsearch
" 大文字小文字を区別しない(検索時)
set ignorecase
" ただし大文字を含んでいた場合は大文字小文字を区別する(検索時)
set smartcase

" カーソル位置が右下に表示される
set ruler
" 行番号を付ける
set number
" タブ文字の表示 ^I で表示されるよ
set list
" コマンドライン補完が強力になる
set wildmenu
" コマンドを画面の最下部に表示する
set showcmd
" クリップボードを共有する(設定しないとvimとのコピペが面倒です)
set clipboard=unnamed

" 改行時にインデントを引き継いで改行する
set autoindent
" インデントにつかわれる空白の数
set shiftwidth=4
" <Tab>押下時の空白数
set softtabstop=4
" <Tab>押下時に<Tab>ではなく、ホワイトスペースを挿入する
set expandtab
" <Tab>が対応する空白の数
set tabstop=4

" インクリメント、デクリメントを16進数にする(0x0とかにしなければ10進数です。007をインクリメントすると010になるのはデフォルト設定が8進数のため)
set nf=hex
" マウス使えます
set mouse=a

" インサートモードの時に C-j でノーマルモードに戻る
imap <C-j> <esc>
" [ って打ったら [] って入力されてしかも括弧の中にいる(以下同様)
imap [ []<left>
imap ( ()<left>
imap { {}<left>

" 2回esc を押したら検索のハイライトをヤメる
nmap <Esc><Esc> :nohlsearch<CR><Esc>
" }}}

特に imap(インサートモード) とか nmap(ノーマルモード) のキーマッピングは使えます。
キーマッピングを記載することによって自分好みのショートカットが設定できるということですし。

imap < <><left>
と記載しておけばどうなるかは予測できますよね。
ちなみに記法は
imap or nmap 入力キー 実行すること
になります。
:(コロン)のあとにコマンドを書くとコマンドを実行してくれたりします。
<CR>,<Esc>,<Tab>など、一部のキーは特殊な記法になっているので注意してください。

最後に

紹介したvimrcについてはgithubやネットを調べれば自分好みの設定が見つかると思うので、いろいろ調べてみるのがいいと思います。
次回はプラグインに入っていこうかと思います。
正直今回紹介していこうかと思いましたが、長くなりましたので次回に回します。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away