vi,vimコマンド備忘録
大体覚えてはいるが、度忘れしたときの自分用の備忘録として残します。
■カーソル移動■
key |
key2 |
Action |
h |
BS |
1文字左へ移動(←) |
j |
Ctrl + N |
1行下へ移動(↓) |
k |
Ctrl + P |
1行上へ移動(↑) |
l |
SPACE |
1文字右に移動(→) |
0 |
- |
行の頭へ移動 |
$ |
- |
行の最後へ移動 |
Ctrl + F |
- |
1ページ下へ |
Ctrl + B |
- |
1ページ上へ |
Ctrl + D |
- |
半ページ下へ |
Ctrl + U |
- |
半ページ上へ |
■入力・編集■
(コマンドモードでここのコマンドを入力すると入力モードになります)
key |
Action |
a |
カーソルの右から入力開始 |
A |
行末から入力開始 |
i |
カーソルの左から入力開始 |
I |
行頭から入力開始 |
o |
現在の行の下に1行挿入し、その行頭から入力開始 |
O |
現在の行の上に1行挿入し、その行頭から入力開始 |
■削除■
key |
Action |
x |
カーソル上の1文字削除 |
X |
カーソルの左の文字を1文字削除 |
dd |
現在の行を削除(バッファにコピーされる) |
ndd |
n行、削除 |
dw |
カーソル上の一語を削除 |
d$ |
カーソル位置から行の最後までを削除 |
:行1, 行2 |
d 行1 から行2 を削除 |
■検索■
key |
Action |
/<文字列> |
文字列 を検索する |
?<文字列> |
文字列を検索する(逆方向) |
n |
順方向へ検索する |
N |
逆方向へ検索する |
■置換■
key |
Action |
r |
カーソル上の1文字を他の1文字に置換 |
R |
カーソル上の文字からEscが押されるまでの文字列を置換 |
s |
カーソルのある1文字を他の文字列で置換 |
S |
現在の行を他の文字列で置換 |
cw |
カーソル位置からこの語の最後までを置換 |
cf 字 |
カーソル位置から指定した字 までを置換 |
C |
カーソル位置から行の最後までを置換 |
:&, |
& 直前のsコマンドの繰り返し |
:%s/置換え前/置換え後 |
置換え前の文字列を、置換え後の文字列で置換 もっとも近くにある文字列一つに対してのみ実行 |
:%s/置換え前/置換え後/g |
ファイルの中すべての文字列に対して、置換えを行う |
~(チルダ) |
大文字/小文字を変更する |
■カット&ペースト■
key |
Action |
yy |
現在の行をバッファにコピー |
nyy |
n行分をバッファにコピー |
yw |
単語をバッファにコピー |
p |
バッファ内のテキストを挿入 (文字、単語はカーソルの右に、行は現在の行の下に挿入される) |
P |
バッファ内のテキストを挿入 (挿入位置はpの逆。文字、単語はカーソルの左に、行は現在の行の上に挿入される) |
■Undo・Redo■
key |
Action |
u |
直前の操作を取りやめる |
U |
行全体の操作を取りやめる |
. |
直前の操作の繰り返し |
■ファイル操作■
key |
Action |
:w [ファイル名] |
現在のファイル(指定ファイル)に保存 |
:w! [ファイル名] |
書き込みを強行 |
:行1, 行2 [ファイル名] |
ファイル名 行1 から行2 のテキストをファイルに保存 |
:w >> [ファイル名] |
現行ファイルの最後に書き加える |
:r [ファイル名] |
現在の行の次の行にファイルを読み込み、挿入する |
:r |
現在の行の次の行に現在のファイルを読み込み、挿入する |
:args |
編集ファイルの一覧を表示する |
:n |
複数個のファイル編集時、次のファイルを編集対象とする |
:e# |
一つ前の編集ファイルに戻る |
:e!% |
現在のファイルを再ロードして、最初から編集をやり直す |
:e [ファイル名] |
指定ファイルを編集対象とする |
:e ++enc=<文字コード> |
現在のファイルを指定した文字コードで再ロードする |
:rewind |
現在のファイルの変更内容を保存して、リストの最初から編集をやり直す |
:rewind! |
現在のファイルの変更内容を保存しないで、リストの最初から編集をやり直す |
■終了■
key |
Action |
ZZ |
viを終了(内容が変更されている場合は保存) |
:wq |
ファイルに保存してvi終了 |
:q |
viを終了(内容が変更されている場合は警告) |
:q! |
viの強制終了(内容が変更されていても保存されない) |
■UNIXコマンドの実行■
key |
Action |
:!<コマンド> |
<コマンド>を実行する |
:!! |
直前の<コマンド>を再実行する |
:sh |
一時的にシェルに戻る。exitでviに戻る。 |
■コマンドのフィルタリング■
key |
Action |
!<コマンド> |
<コマンド>を実行して結果を挿入 |
!!date |
dateコマンドの結果の挿入 |
!!tr A-Z a-z |
カーソル行の大文字を小文字に変換 |
■テキスト入力の略記■
key |
Action |
:ab <文字列> <置換え文字列> |
<文字列>と入力すると<置換え文字列>に置き換えるように設定する |
:unab <文字列> |
<文字列>の置き換え設定を解除する |
:ab |
一覧表示 |
■その他■
key |
Action |
Ctrl + G |
ファイル名、修正の有無、現在の行数などの情報が表示されます |
Ctrl + L |
画面を再表示 |
Shift + Q |
exで編集をする |
vi |
exからviに戻る |
■コマンド■
key |
Action |
:set number (もしくは:set nu) |
行番号を表示する |
:set no number (もしくは:set nonu) |
行番号の表示をやめる |
:set showmode |
現在のモードを表示する |
:set showmatch |
() や {} の対応の報告をするようになる |
:set ignorecase |
大文字/小文字の区別なく検索する |
:set autoindent |
自動インデントモード |
:set noautoindent |
自動インデントモードをやめる |
:set all |
すべてのオプションを表示する |
:set enc? |
viの文字コードを確認 |
:set fenc=<文字コード> |
ファイルの文字コード変更 |
■ショートカットキー集■
vim日本語チートシート
今更ながらvimチートシート
Vimチートシートを作りました(超初心者用)
■.vimrcの例 (vimの設定ファイル)■
"----------------------------------------------------
" 基本的な設定
"----------------------------------------------------
" viとの互換性をとらない(vimの独自拡張機能を使う為)
set nocompatible
"改行コードの自動認識
set fileformats=unix,dos,mac
" ビープ音を鳴らさない
set vb t_vb=
" バックスペースキーで削除できるものを指定
" indent : 行頭の空白
" eol : 改行
" start : 挿入モード開始位置より手前の文字
set backspace=indent,eol,start
"----------------------------------------------------
" バックアップ関係
"----------------------------------------------------
" バックアップをとらない
set nobackup
" ファイルの上書きの前にバックアップを作る
" (ただし、backup がオンでない限り、バックアップは上書きに成功した後削除される)
set writebackup
" バックアップをとる場合
set backup
" バックアップファイルを作るディレクトリ
"set backupdir=~/backup
" スワップファイルを作るディレクトリ
"set directory=~/swap
"----------------------------------------------------
" 検索関係
"----------------------------------------------------
" コマンド、検索パターンを100個まで履歴に残す
set history=100
" 検索の時に大文字小文字を区別しない
set ignorecase
" 検索の時に大文字が含まれている場合は区別して検索する
set smartcase
" 最後まで検索したら先頭に戻る
set wrapscan
" インクリメンタルサーチを使わない
"set noincsearch
" インクリメンタルサーチ
set incsearch
"クリップボードをWindowsと連携
set clipboard=unnamed
"----------------------------------------------------
" 表示関係
"----------------------------------------------------
"カラースキーマ(zenburn,blackdust,desert等をダウンロードし~/vimfiles/coloersに配置)
coloerscheme zenburn
" タイトルをウインドウ枠に表示する
set title
" 行番号を表示しない
set nonumber
" ルーラーを表示
set ruler
" 現在の行を強調表示
set cursorline
" タブ文字を CTRL-I で表示し、行末に $ で表示する
"set list
" 入力中のコマンドをステータスに表示する
set showcmd
" ステータスラインを常に表示
set laststatus=2
" 括弧入力時の対応する括弧を表示
set showmatch
" 対応する括弧の表示時間を2にする
set matchtime=2
" シンタックスハイライトを有効にする syntax on
" 検索結果文字列のハイライトにする
set hlsearch
" ESC連打でハイライト解除 nmap <Esc><Esc> :nohlsearch<CR><Esc>
" コメント文の色を変更
highlight Comment ctermfg=DarkCyan
" コマンドライン補完を拡張モードにする
set wildmenu
" 入力されているテキストの最大幅
" (行がそれより長くなると、この幅を超えないように空白の後で改行される)を無効にする
set textwidth=0
" ウィンドウの幅より長い行は折り返して、次の行に続けて表示する
set wrap
" 全角スペースの表示
highlight ZenkakuSpace cterm=underline ctermfg=lightblue guibg=darkgray
match ZenkakuSpace / /
" ステータスラインに表示する情報の指定 set statusline=%n\:%y%F\ \|%{(&fenc!=''?&fenc:&enc).'\|'.&ff.'\|'}%m%r%=
" ステータスラインの色
highlight StatusLine term=NONE cterm=NONE ctermfg=black ctermbg=white
"----------------------------------------------------
" インデント
"----------------------------------------------------
" オートインデントを無効にする
"set noautoindent
" タブが対応する空白の数
set tabstop=4
" タブやバックスペースの使用等の編集操作をするときに、タブが対応する空白の数
set softtabstop=4
" インデントの各段階に使われる空白の数
set shiftwidth=4
" タブを挿入するとき、代わりに空白を使わない
set noexpandtab
"----------------------------------------------------
" 国際化関係
"----------------------------------------------------
" 文字コードの設定
" fileencodingsの設定ではencodingの値を一番最後に記述する
set encoding=utf-8
set termencoding=utf-8
set fileencoding=utf-8
set fileencodings=ucs-bom,euc-jp,cp932,iso-2022-jp
set fileencodings+=,ucs-2le,ucs-2,utf-8
"----------------------------------------------------
" オートコマンド
"----------------------------------------------------
if has("autocmd")
" ファイルタイプ別インデント、プラグインを有効にする
filetype plugin indent on
" カーソル位置を記憶する
autocmd BufReadPost * \
if line("'\"") > 0 && line("'\"") <= line("$") |
\ exe "normal g`\"" | \
endif
endif
"----------------------------------------------------
" その他
"----------------------------------------------------
" バッファを切替えてもundoの効力を失わない
set hidden
" 起動時のメッセージを表示しない
set shortmess+=I
"マウス設定
set mouse=a
set ttymouse=xterm2
"viをマスターするために
" 矢印キーを無効にする
noremap <Up> <Nop>
noremap <Down> <Nop>
noremap <Left> <Nop>
noremap <Right> <Nop>
inoremap <Up> <Nop>
inoremap <Down> <Nop>
inoremap <Left> <Nop>
inoremap <Right> <Nop>
"----------------------------------------------------
" 独自設定
"----------------------------------------------------
" スクロール時の余白確保
set scrolloff=5
" 他で書き換えられたら自動で読み直す
set autoread
" 行番号表示
set number
" インデント
set autoindent
"複数行のクリップボードからの貼付けがおかしくなる。
":set paste
"を入力してから貼り付けをすれば、問題なく貼り付けができる。
set smartindent
set cindent
set noexpandtab
" タブをスペースに展開しない
" コマンド補完を開始するキー
set wildchar=<tab>
set whichwrap=b,s,h,l,<,>,[,]
" カーソルを行頭、行末で止まらないようにする
" キーバインド関係
" 折り返し時に表示行単位での移動できるようにする
nnoremap j gj
nnoremap k gk
" カレントウィンドウにのみ罫線を引く augroup cch
autocmd! cch
autocmd WinLeave * set nocursorline
autocmd WinEnter,BufRead * set cursorline
augroup END
●FencView.vimっていうプラグインを入れると
自動で文字コード判断してくれて便利です。
http://www.vim.org/scripts/script.php?script_id=1708