LoginSignup
7
11

More than 3 years have passed since last update.

vi,vimコマンド備忘録

Posted at

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

7
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
11