VIM の使い方2025年8月9日 | |
はじめにVIM(Vi IMproved) は UNIX 標準エディタ VI (VIsual editor) のクローンです。このページでは VIM の使い方を説明します。
目次基本の操作
便利な操作
細かい操作
※a, e, b はアンダースコア以外の区切り文字 (/ や - など) でも止まるが、W, E, B はもっと大雑把に移動する。 もっと細かい操作
設定
設定例設定ファイル ~/.vimrc
set nocompatible " VI 互換でない
set nobackup " バックアップはとらない
set laststatus=2 " 常にステータスを表示
set showmode " モードを表示
set ruler " ルーラーを表示
set showcmd " 打ったキーを表示
set backspace=indent,eol,start " 挿入開始以前の文字や改行も削除
set whichwrap=b " カーソル移動で行を越えて移動させるか
set showmatch " 括弧の対応の表示
set ignorecase " 検索時大文字と小文字を区別しない
set incsearch " インクリメンタルサーチ
set smartindent " 賢いオートインデント
set number " 行番号を表示
set visualbell " ビープ音を鳴らさない
syntax on " シンタックスハイライト
filetype plugin indent on " ファイルタイププラグインを有効にする
" エンコーディング
set encoding=utf-8 " VIM の文字コード
set fileencoding=utf-8 " ファイルの文字コード
set fileencodings=utf-8,iso-2022-jp,shift-jis,euc-jp,utf-16
" カーソル位置の記憶
autocmd BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
ダブルクウォート (") から行末まではコメント。 Tab の設定Tab の幅を変えたい場合 set tabstop=4 " Tab の幅 set shiftwidth=4 " 自動インデントで挿入される幅 Tab で空白を使いたい場合 set expandtab " Tab で空白を挿入する set shiftwidth=4 " 自動インデントで挿入される空白数 set softtabstop=4 " Tab で挿入される空白数 ファイルタイプで設定を変えるファイルタイプに応じて設定を変えたい場合は、簡単には次のようにする。 autocmd FileType html setlocal shiftwidth=2 softtabstop=2 nosmartindent indentexpr= autocmd FileType javascript setlocal shiftwidth=2 softtabstop=2 autocmd FileType tex setlocal shiftwidth=2 softtabstop=2 nosmartindent indentexpr= 任意の列に色付けするたとえば、80 文字以下で改行する方針の場合に、わかりやすく 80 文字で線を表示するには、次のようにする。 set colorcolumn=81 コメントアウト用設定vmap # :s/^/#/<CR> vmap .# :s/^#//<CR> vmap // :s%^%//%<CR> vmap .// :s%^//%%<CR> ビジュアルモードで行を選択して "#" と打つと行頭に "#" がつき、".#" と打つと行頭の "#" が消える。 map !< O<!--<Esc> map !> o--><Esc> HTML 用のコメントアウト設定。ノーマルモードで "!<" と打つと上の行に "<!--" と挿入され、"!>" と打つと下の行に "-->" と挿入される。 ここで、map はノーマルモードのキーマッピングで、vmap はビジュアルモードの、imap だと挿入モードのマッピングになる。 ほんとうはファイルタイプに応じて設定すべきだが、マッピングがかぶらない限りは大丈夫だろう。 HTML の "<"、">" の変換HTML の "<"、">" を "<"、">" に変換する vmap &< :s/</\</g<CR> vmap &> :s/>/\>/g<CR> HTML タグの対応% で対応する HTML タグに飛ぶようにしたい場合は、以下のように設定する。 source $VIMRUNTIME/macros/matchit.vim 関数間移動の設定]], [[ などによる行頭の "{", "}" への移動は、C 言語風の関数間移動に使えるが、"{" を行頭に置かないスタイルもある。その場合に対応するには、設定で次のようにする。
map [[ ?{
空白の表示空白を表示するには、まず空白文字などを設定する。 set listchars=eol:¬,space:␣,tab:>· 次のようにすると空白文字が表示される。 :set list コピー & ペーストオートインデントが有効な状態で他のアプリケーションから vim にコピー & ペーストすると、インデントが崩れてしまう。これを避けるためには、":set paste" と設定してペーストする。ただし、このままだとオートインデントが効かなくなるので、":set nopaste" で元に戻す必要がある。 .vimrc で次のように設定しておけば、挿入モードを抜けるときに自動的に ":set nopaste" される。 autocmd InsertLeave * set nopaste あるいは、次のように設定しておくと、":set pasete"、":set nopaste" が自動的に設定される (設定の意味はわからない)。
if &term =~ "xterm"
let &t_ti .= "\e[?2004h"
let &t_te .= "\e[?2004l"
let &pastetoggle = "\e[201~"
function XTermPasteBegin(ret)
set paste
return a:ret
endfunction
noremap <special> <expr> <Esc>[200~ XTermPasteBegin("0i")
inoremap <special> <expr> <Esc>[200~ XTermPasteBegin("")
cnoremap <special> <Esc>[200~ <nop>
cnoremap <special> <Esc>[201~ <nop>
endif
参考 文字コードの変更たとえば、Shift-JIS の文書を UTF-8 に変換したい場合などは、次のようにする。 :set fenc=utf-8 改行コードの変更たとえば、DOS の改行コード (CR-LF) を UNIX 形式 (LF) に変えて保存するには、次のようにする。 :w ++ff=unix 入力補完辞書の設定同じファイル内のキーワードから入力補完を行うには Ctrl-P、Ctrl-N を使えばよいが、ファイル内にないキーワードを入力補完したい場合は、辞書を用意する。 たとえば、~/.vim/words/ あたりに general.txt とか適当な単語リストファイルを作る。このファイルを設定で追加する。 set dictionary+=~/.vim/words/general.txt 入力中に Ctrl-X、Ctrl-K と押すと、補完候補が出てくるので、Ctrl-P、Ctrl-N で選択する。 もし、Ctrl-X、Ctrl-K を押さずに Ctrl-P、Ctrl-N だけで辞書の候補を選べるようにしてよいのであれば、次のように設定する。 set complete+=k ファイルタイプごとに辞書を設定したい場合は、たとえば、次のようにすればよい。 autocmd FileType fortran setlocal dictionary+=~/.vim/words/fortran.txt ただ、この場合はシンタックスのキーワードの入力補完になると思われるので、それについては別の方法がある (それでは足りない場合もあるが)。 参考 シンタックスキーワードの入力補完の設定シンタックスのキーワードの入力補完をする場合は、(おそらくファイルタイプごとに) 次のように設定しておく。 setlocal omnifunc=syntaxcomplete#Complete 入力中に Ctrl-X、Ctrl-O と押すと、補完候補が出てくるので、Ctrl-P、Ctrl-N で選択する。 Ctrl-X、Ctrl-O がめんどくさい場合は、Ctrl-@ にでも割り当てておけばよいかもしれない。 imap <C-@> <C-X><C-O> 参考 ファイルタイプごとの設定ファイルタイプごとにまとまった設定をしたい場合は、~/.vim/ftplugin/ に "ファイルタイプ名.vim" のファイルを置く。たとえば、fortran 用の設定であれば fortran.vim を置けばよい。 Fortran 用の設定Fortran 用のファイルを新規作成したとき、拡張子が .f90 でも固定フォーマットになるらしい。一度保存して起動しなおせばフリーフォーマットになるが、めんどくさいので、~/.vimrc (プラグインのほうではなく) に次のように設定しておく。 let fortran_free_source=1 .inc ファイルを Frotran ファイルとみなしたい場合は、~/.vim/filetype.vim を用意する。
if exists("did_load_filetypes")
finish
endif
augroup filetypedetect
au! BufRead,BufNewFile *.inc setfiletype fortran
augroup end
その他の設定~/.vim/ftplugin/fortran.vim setlocal shiftwidth=2 setlocal softtabstop=2 vmap ! :s/^/!/<CR> vmap .! :s/^!//<CR> | |
| PENGUINITIS | |