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