Linuxを扱う上で、避けて通れないものの一つに、viエディタが存在ます。
独自のコマンド体型と操作系が、初心者の意欲をざっくりと削っていきますが、
なれると他のエディタとは一線を引く便利さに虜になることでしょう。
また、広範囲な拡張機能も魅力の一つです。
vi には、大きく分けて2つのモードがあり、それぞれのモードを行き来することにより、業務をこなしていきます。
コマンドモード
文字通り、コマンドを入力して実行させるモードです。
vi の起動直後も、コマンドモードとなっています。
文字列の検索や置換といった業務も、コマンドモードで実行します。
文字入力モード
文字通り、文字を入力するモードのことです。
基本的には、文字を入力することがほとんどすべてで、様々な処理はすべてコマンドモードで実行します。
言葉の説明
ふだんWindowsを使っていると、聞き慣れない言葉が存在しますので、その説明を行います。
ヤンク コピーバッファのこと
CTRL + a を押下するときの記述として、下記のような表記にします。
C-a CTRL + a
C-A CTRL + SHIFT + a (CTRL + A)
コマンドモード
viが起動直後の状態。文字入力を行う前の状態。
※なお、コマンドの前に数字を入力すると、入力した回数分コマンドを繰り返し実行します。
例
3y カーソルのある行から3行分ヤンクします
5dd カーソルのある行から、5行分行削除をします
コマンド入力モード
(『:』キーを押下してから文字を入力するモード)
vi の環境変数の設定コマンド
環境変数の後ろに引数を伴わないパラメータは、noを先頭に付けることにより、無効にすることができます。
編集モード
これを知っていると、ちょっぴりだけ便利になるようなテクニックをご紹介。
==================================================
↑こういった入力って、意外と使うこと多いですよね?
でも、毎回キーをずっと押しっぱなしにして、作成していませんか?
それだと、希望する文字数以上入力されて、手直ししたりすることがあると思います。
そんな時には、コレ!!
[入力する数値]i[入力したい文字][ESC]
冒頭に記載した===を例に書くと、
50i = [ESC]
となります。試しにやってみてください。
ちなみに、入力したい文字は、複数の文字でも可能です。
50i +- [ESC]
こんな感じになるはずです(以下略)
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
置換
viで文字列の置換を行う場合の説明をします。
viの置換を覚えると作業効率がグッとはかどるようになります。 たぶん。
例では、tonyをbillyに変換する場合を例にします
置換対象の文字列を検索し、置換(g)するかの確認(c)をしながら置換する
:%s/置換前文字列/置換後文字列/gc
:%s/tony/billy/gc
指定した範囲を置換対象とする場合 (30行~50行を置換対象とする場合)
:30,50s/tony/billy/g
homeディレクトリに、.vimrcファイルを設置して、内容を編集することにより、vimの環境を様々な状態にカスタマイズすることが可能です。
先ほど説明した、:setで指定できるパラメータはほとんどここに既述することができます。
ただし、何でもかんでも .vimrc ファイルに記述していくと、起動時に読み込む時間がかかるため、動作が遅くなったり、設定内容の全体を把握できなくなります。
できるだけ、シンプルに、かつ、要点を抑えた設定内容を盛り込んでおくことは、作業効率の向上する環境づくりになると思います。
パラメーター一覧
vi は様々なカスタマイズを施すことにより、より自分の手に馴染むように作り替える事が可能となっています。
下記に、その設定パラメーターの例を示します。
基本的に、設定パラメータは、そのままコマンド行から入力・設定することが出来ます。
例:
set number
※様々な設定によって、設定を変更出来るとは言いましたが、設定ファイルが肥大化するような設定は
動作その物を遅くする元となりますので、あまりお進めする事は出来ません。
.vimrcのサンプル
" Vim の構文ハイライト機能を有効にするコマンド
" Ubuntu 12.10ではエラーになる
"""syntax enable
" Ubuntu Default Settings
set filetype=vim
set ruler
set ttyfast
set helplang=ja
set scroll=15
set ttymouse=xterm2
set history=50
set nomodeline
set syntax=vim
set backspace=indent,eol,start
set fileencoding=utf-8
set fileencodings=ucs-bom,utf-8,default,latin1
set printoptions=paper:a4
set runtimepath=~/.vim,/var/lib/vim/addons,/usr/share/vim/vimfiles,/usr/share/vim/vim73,/usr/share/vim/vimfiles/after,/var/lib/vim/addons/after,~/.vim/after
set suffixes=.bak,~,.swp,.o,.info,.aux,.log,.dvi,.bbl,.blg,.brf,.cb,.ind,.idx,.ilg,.inx,.out,.toc
" 検索文字列が小文字の場合は大文字小文字を区別なく検索する(noignorecase)
set ignorecase
" 検索文字列に大文字が含まれている場合は区別して検索する(nosmartcase)
set smartcase
" インクリメンタルサーチを有効にする
set incsearch
" 検索に合致した文字/文字列を反転表示する
set hlsearch
" カレント行ハイライトON
set cursorline
" アンダーラインを引く(color terminal)
highlight CursorLine cterm=underline ctermfg=NONE ctermbg=NONE
" アンダーラインを引く(gui)
highlight CursorLine gui=underline guifg=NONE guibg=NONE
" ファイルタイプにあったインデントを自動的に適用してくれる(らしい)
Ubuntu 12.10ではエラーになる
""filetype plugin indent on