上野家のホームページ
ナーマル,マリン,ココ
[
新規
|
一覧
|
検索
|
最新
|
ヘルプ
]
PC/vi
をテンプレートにして作成
資料室
PC/vi をテンプレートにして作成
[
差分
|
バックアップ
|
リロード
]
[ ]
開始行:
#topicpath
#contents
* vi, vimとは
vi,vimは,UNIXに昔から標準的に使われているテキストエディ...
viを基にして,機能を拡張したものがvim(vi improved)エデ...
viは,Windowsの一般的なテキストエディタとは,かなり印象が...
多少とっつきにくい面はあるんだけど,慣れてくると高速で編...
viを起動するには,単純に,
$ vi
と入力しても構わないし,またファイル名が決まっていれば(...
$ vi ファイル名
で使えます。
* Windowsでvi
Windowsで使えるコンパイル済みのvim(日本語対応)を, http...
インストールは,適当なディレクトリに解凍すればOK。環境変...
*よく使うvi,vimのコマンド
vi,vimは,一般的なテキストエディタと違い,''コマンドモー...
起動直後は,''コマンドモード''になっていて,''入力モード'...
ESCキーを押すといつでも''コマンドモード''に戻れます。
操作がわからなくなったら,とりあえずESCキーを二回ほど押し...
''太字''を覚えればなんとかなります&wink;
** ファイル操作
|key|内容|h
|ZZ|上書き保存し,viを終了|
|:wq|上書き保存して,viを終了|
|'':x''|保存して,viを終了|
|'':w''|内容を保存|
|'':q!''|保存せずに終了|
** モード
|key|内容|h
|''i''|挿入モードへ|
|''a''|追加(カーソルの次から編集)|
|o|新しい行を追加し挿入モードへ|
|R|上書きモードへ|
|v|ビジュアルモードへ|
|Ctrl + v|矩形選択のビジュアルモードへ|
|''ESC''|入力モード -> コマンドモードに戻る|
|ctrl + [|入力モード -> コマンドモードに戻る|
|ctrl + z|vimを一時停止する|
** カーソル移動
|key|内容|h
|''k'',Ctrl + p|1行戻る|
|''j'',Ctrl +n|1行進む|
|''h'',BS|1文字戻る|
|''l'',SP|1文字進む|
|w|次の単語(Word)|
|e|次の単語|
|b|前の単語|
|f(文字)|カーソルがある行の(文字)に移動(Find)|
|F(文字)|カーソルがある行の(文字)に移動(逆向き)|
|0,^|行頭|
|$|行末|
|%|対応する括弧に移動|
|Ctrl + f|1画面(Up)|
|Ctrl + b|1画面(Down)|
|Ctrl + u|半画面上(Up)|
|Ctrl + d|半画面下(Down)|
|Ctrl + e|1行(Up)|
|Ctrl + y|1行(Down)|
|zt, z<Enter>|カーソルを画面の最初に|
|zz, z.|カーソル行を画面の中央に|
|zb, z-|カーソル行を画面の最後に|
** 行移動
|key|内容|h
|gg|最初の行(1g)|
|88G|88行目|
|G|最終行|
|H|画面上の最初の行(Home)|
|M|画面上の中央の行(Middle)|
|L|画面上の最後の行(Last)|
|``|直前の行マークへ戻る|
** マーク
|Ctrl + o|古いマークへジャンプ|
|Ctrl + i|新しいマークへジャンプ|
|ma|マークaを設定(a〜z)|
|`a|マークaにジャンプ|
|'a|マークaの行頭にジャンプ|
|:marks|マーク一覧|
** 検索と置換
|key|内容|h
|''/''|後方検索(.*[]^%/\?~$は,特別な意味をもつので「\....
|?|前方検索|
|''n''|再検索|
|''N''|上方向に再検索|
|*|カーソル下の単語を検索|
|#|カーソル下の単語を検索(上方向に検索)|
|:%s/hage/hoge/g|単語の置換(hageをhogeへ置換)。%はファ...
** 編集
|key|内容|h
|.|直前の変更を繰り返す|
|u|Undo|
|Ctrl + r|Redo|
|''x''|カーソル位置の1文字を削除|
|X|カーソル左の1文字を削除|
|dw|1単語削除|
|''dd''|1行削除|
|D|行末まで削除(d$)|
|J|次の行をくっつける|
** コピー&ペースト
|key|内容|h
|yw|1単語コピー(yank)|
|Y,yy|今いる行をコピー(yank)|
|''p''|カーソルの場所に,ペースト|
|yy5p|現在の行をコピーし,下に5行追加する|
|gv|直前の選択範囲を再選択|
|v|visualモードへ(hjklで範囲選択)|
|V|行全体を選択してvisualモードへ|
|Ctrl + V|visualモードへ(矩形選択)|
|o,O|(visualモード中)選択範囲の四隅へ移動|
** 特殊文字
|key|内容|h
|Ctrl + v return|改行文字の入力|
|Ctrl + v tab|Tab 文字の入力|
** ウィンドウ
|key|内容|h
|:vsplit|画面を左右に分割する|
|:e filename|今いるWindowにファイルを開く(Edit)|
|:e test*.cc|ワイルドカードを指定してファイルを開く|
|Ctrl +w h|左のWindowへ移動|
|Ctrl + w l|右のWindowへ移動|
** バッファ
|key|内容|h
|:buffers|編集中のバッファ一覧を表示|
|:bn|次のバッファに移動|
|:bd[elete]|バッファを削除|
** 単語補完
|key|内容|h
|Ctrl + p|単語補完(前方検索)|
** マクロ
|key|内容|
|q<letter>|マクロの記録開始|
|q|マクロの記録停止|
|@<letter>|マクロの実行|
** レジスタ
|key|機能|h
|:reg|レジスタの一覧表示|
|Ctrl + r "|ヤンクした文字列をペースト|
** コマンドの意味
|key|意味|h
|g|繰り返し|
|c|1回毎に確認|
** その他
|key|内容|h
|:!command|外部コマンドの実行|
|:|範囲選択中に : を入力すると,選択領域の範囲指定( ’<,’...
|Ctrl + a|数値のインクリメント|
|Ctrl + x|数値のデクリメント|
* tips
** 行番号を表示
行番号を表示させるには,コマンドモードで,
:set nu
逆に,行番号をを表示させないためには,
:set nonu
** 改行コードが誤認識されているとき
:set ff=dos #なんか「^M」がいっぱい出たとき
:set ff=unix
:set ff=mac #「^M」がいっぱい出て、かつ全部一行になっ...
ffは,fileformatの略。
なお,dosとunixの改行コードが混在しているようなファイルに...
** 改行コードの自動認識
以下を .vimrcに書いておく。
set fileformats=unix,dos,mac
新規ファイルの場合,fileformatsの最初の改行コードが使われ...
** 文字コードが誤認識されているとき
以下のようなコマンドで,編集中のファイルを指定した文字コ...
:e ++enc=euc-jp
:e ++enc=sjis
:e ++enc=iso-2022-jp
しょっちゅう誤認識が起こるときは,以下を~/.vimrc(or %HOM...
" 文字コードの自動認識
if &encoding !=# 'utf-8'
set encoding=japan
set fileencoding=japan
endif
if has('iconv')
let s:enc_euc = 'euc-jp'
let s:enc_jis = 'iso-2022-jp'
" iconvがeucJP-msに対応しているかをチェック
if iconv("\x87\x64\x87\x6a", 'cp932', 'eucjp-ms') ==# ...
let s:enc_euc = 'eucjp-ms'
let s:enc_jis = 'iso-2022-jp-3'
" iconvがJISX0213に対応しているかをチェック
elseif iconv("\x87\x64\x87\x6a", 'cp932', 'euc-jisx021...
let s:enc_euc = 'euc-jisx0213'
let s:enc_jis = 'iso-2022-jp-3'
endif
" fileencodingsを構築
if &encoding ==# 'utf-8'
let s:fileencodings_default = &fileencodings
let &fileencodings = s:enc_jis .','. s:enc_euc .',cp...
let &fileencodings = &fileencodings .','. s:fileenco...
unlet s:fileencodings_default
else
let &fileencodings = &fileencodings .','. s:enc_jis
set fileencodings+=utf-8,ucs-2le,ucs-2
if &encoding =~# '^\(euc-jp\|euc-jisx0213\|eucjp-ms\...
set fileencodings+=cp932
set fileencodings-=euc-jp
set fileencodings-=euc-jisx0213
set fileencodings-=eucjp-ms
let &encoding = s:enc_euc
let &fileencoding = s:enc_euc
else
let &fileencodings = &fileencodings .','. s:enc_euc
endif
endif
" 定数を処分
unlet s:enc_euc
unlet s:enc_jis
endif
" 日本語を含まない場合は fileencoding に encoding を使う...
if has('autocmd')
function! AU_ReCheck_FENC()
if &fileencoding =~# 'iso-2022-jp' && search("[^\x01...
let &fileencoding=&encoding
endif
endfunction
autocmd BufReadPost * call AU_ReCheck_FENC()
endif
" 改行コードの自動認識
set fileformats=unix,dos,mac
" □とか○の文字があってもカーソル位置がずれないようにする
if exists('&ambiwidth')
set ambiwidth=double
endif
** 文字コードを変更して保存する †
cp932(Shift-JIS)にするには以下のようにする。
:set fileencoding=cp932
この状態だとまだ保存してないので,:wしてやれば文字コード...
** ファイルの種類を指定したいとき
:set ft=html #htmlファイルとして色付け・インデントした...
ftは,filetypeの略。
ファイルの先頭か末尾5行以内に,
vim:set ft=html:
などと書いておくと,読み込み時に自動的に種類を指定できる...
** 編集中のファイルをRubyで加工する
[範囲指定] !ruby を使う。ファイル全体なら,
:%!ruby -e 'print ARGF.read.gsub( /before:(.*) after:(.*...
とか。
選択範囲だけ加工する場合は
:'<,'>!ruby ...
(vで選択中に:を押すと,'<,'>は自動で入力される。)
** キーボードマクロを使う
vimでは,qコマンドで一連のキー操作をレジスタに保存し,そ...
例えば,texで論文を書いていて,「true」や「my-func」のよ...
qk (レジスタkに記録開始)
dw (単語の削除)
i (入力モードに入る)
\|| (囲い)
ESC (入力モードを抜ける)
h (一文字左へ)
P (ペースト)
q (記録終了)
とすると,「カーソルの下の単語を\| |で囲む」という一連の...
あとは,文章中の識別子のところで「@k」のように入力すると...
** カーソルを点滅させない(gvim)
set guicursor=a:blinkon0
** カーソル下のファイル名を開く
例えば,hoge.txtという文字列にカーソルを合わせて,gfを押...
** abc <--> ABC
~で,カーソル下の文字の大文字と小文字を切り替えることがで...
g~[motion]で,ある範囲の文字を一気に切り替えることができ...
g~~で,現在行の大文字と小文字を切り替えることができる。
** バイナリ編集
vimでバイナリを編集したい場合,よくある16進ダンプとそれの...
xxdを使って,バイナリ編集をする方法がある。(xxdは,MinGW...
"バイナリ編集(xxd)モード(vim -bでの起動,もしくは *.b...
augroup BinaryXXD
autocmd!
autocmd BufReadPre *.bin let &binary =1
autocmd BufReadPost * if &binary | silent %!xxd -g 1
autocmd BufReadPost * set ft=xxd | endif
autocmd BufWritePre * if &binary | %!xxd -r | endif
autocmd BufWritePost * if &binary | silent %!xxd -g 1
autocmd BufWritePost * set nomod | endif
augroup END
** 私が使用している設定ファイル
#ref(.vimrc)
終了行:
#topicpath
#contents
* vi, vimとは
vi,vimは,UNIXに昔から標準的に使われているテキストエディ...
viを基にして,機能を拡張したものがvim(vi improved)エデ...
viは,Windowsの一般的なテキストエディタとは,かなり印象が...
多少とっつきにくい面はあるんだけど,慣れてくると高速で編...
viを起動するには,単純に,
$ vi
と入力しても構わないし,またファイル名が決まっていれば(...
$ vi ファイル名
で使えます。
* Windowsでvi
Windowsで使えるコンパイル済みのvim(日本語対応)を, http...
インストールは,適当なディレクトリに解凍すればOK。環境変...
*よく使うvi,vimのコマンド
vi,vimは,一般的なテキストエディタと違い,''コマンドモー...
起動直後は,''コマンドモード''になっていて,''入力モード'...
ESCキーを押すといつでも''コマンドモード''に戻れます。
操作がわからなくなったら,とりあえずESCキーを二回ほど押し...
''太字''を覚えればなんとかなります&wink;
** ファイル操作
|key|内容|h
|ZZ|上書き保存し,viを終了|
|:wq|上書き保存して,viを終了|
|'':x''|保存して,viを終了|
|'':w''|内容を保存|
|'':q!''|保存せずに終了|
** モード
|key|内容|h
|''i''|挿入モードへ|
|''a''|追加(カーソルの次から編集)|
|o|新しい行を追加し挿入モードへ|
|R|上書きモードへ|
|v|ビジュアルモードへ|
|Ctrl + v|矩形選択のビジュアルモードへ|
|''ESC''|入力モード -> コマンドモードに戻る|
|ctrl + [|入力モード -> コマンドモードに戻る|
|ctrl + z|vimを一時停止する|
** カーソル移動
|key|内容|h
|''k'',Ctrl + p|1行戻る|
|''j'',Ctrl +n|1行進む|
|''h'',BS|1文字戻る|
|''l'',SP|1文字進む|
|w|次の単語(Word)|
|e|次の単語|
|b|前の単語|
|f(文字)|カーソルがある行の(文字)に移動(Find)|
|F(文字)|カーソルがある行の(文字)に移動(逆向き)|
|0,^|行頭|
|$|行末|
|%|対応する括弧に移動|
|Ctrl + f|1画面(Up)|
|Ctrl + b|1画面(Down)|
|Ctrl + u|半画面上(Up)|
|Ctrl + d|半画面下(Down)|
|Ctrl + e|1行(Up)|
|Ctrl + y|1行(Down)|
|zt, z<Enter>|カーソルを画面の最初に|
|zz, z.|カーソル行を画面の中央に|
|zb, z-|カーソル行を画面の最後に|
** 行移動
|key|内容|h
|gg|最初の行(1g)|
|88G|88行目|
|G|最終行|
|H|画面上の最初の行(Home)|
|M|画面上の中央の行(Middle)|
|L|画面上の最後の行(Last)|
|``|直前の行マークへ戻る|
** マーク
|Ctrl + o|古いマークへジャンプ|
|Ctrl + i|新しいマークへジャンプ|
|ma|マークaを設定(a〜z)|
|`a|マークaにジャンプ|
|'a|マークaの行頭にジャンプ|
|:marks|マーク一覧|
** 検索と置換
|key|内容|h
|''/''|後方検索(.*[]^%/\?~$は,特別な意味をもつので「\....
|?|前方検索|
|''n''|再検索|
|''N''|上方向に再検索|
|*|カーソル下の単語を検索|
|#|カーソル下の単語を検索(上方向に検索)|
|:%s/hage/hoge/g|単語の置換(hageをhogeへ置換)。%はファ...
** 編集
|key|内容|h
|.|直前の変更を繰り返す|
|u|Undo|
|Ctrl + r|Redo|
|''x''|カーソル位置の1文字を削除|
|X|カーソル左の1文字を削除|
|dw|1単語削除|
|''dd''|1行削除|
|D|行末まで削除(d$)|
|J|次の行をくっつける|
** コピー&ペースト
|key|内容|h
|yw|1単語コピー(yank)|
|Y,yy|今いる行をコピー(yank)|
|''p''|カーソルの場所に,ペースト|
|yy5p|現在の行をコピーし,下に5行追加する|
|gv|直前の選択範囲を再選択|
|v|visualモードへ(hjklで範囲選択)|
|V|行全体を選択してvisualモードへ|
|Ctrl + V|visualモードへ(矩形選択)|
|o,O|(visualモード中)選択範囲の四隅へ移動|
** 特殊文字
|key|内容|h
|Ctrl + v return|改行文字の入力|
|Ctrl + v tab|Tab 文字の入力|
** ウィンドウ
|key|内容|h
|:vsplit|画面を左右に分割する|
|:e filename|今いるWindowにファイルを開く(Edit)|
|:e test*.cc|ワイルドカードを指定してファイルを開く|
|Ctrl +w h|左のWindowへ移動|
|Ctrl + w l|右のWindowへ移動|
** バッファ
|key|内容|h
|:buffers|編集中のバッファ一覧を表示|
|:bn|次のバッファに移動|
|:bd[elete]|バッファを削除|
** 単語補完
|key|内容|h
|Ctrl + p|単語補完(前方検索)|
** マクロ
|key|内容|
|q<letter>|マクロの記録開始|
|q|マクロの記録停止|
|@<letter>|マクロの実行|
** レジスタ
|key|機能|h
|:reg|レジスタの一覧表示|
|Ctrl + r "|ヤンクした文字列をペースト|
** コマンドの意味
|key|意味|h
|g|繰り返し|
|c|1回毎に確認|
** その他
|key|内容|h
|:!command|外部コマンドの実行|
|:|範囲選択中に : を入力すると,選択領域の範囲指定( ’<,’...
|Ctrl + a|数値のインクリメント|
|Ctrl + x|数値のデクリメント|
* tips
** 行番号を表示
行番号を表示させるには,コマンドモードで,
:set nu
逆に,行番号をを表示させないためには,
:set nonu
** 改行コードが誤認識されているとき
:set ff=dos #なんか「^M」がいっぱい出たとき
:set ff=unix
:set ff=mac #「^M」がいっぱい出て、かつ全部一行になっ...
ffは,fileformatの略。
なお,dosとunixの改行コードが混在しているようなファイルに...
** 改行コードの自動認識
以下を .vimrcに書いておく。
set fileformats=unix,dos,mac
新規ファイルの場合,fileformatsの最初の改行コードが使われ...
** 文字コードが誤認識されているとき
以下のようなコマンドで,編集中のファイルを指定した文字コ...
:e ++enc=euc-jp
:e ++enc=sjis
:e ++enc=iso-2022-jp
しょっちゅう誤認識が起こるときは,以下を~/.vimrc(or %HOM...
" 文字コードの自動認識
if &encoding !=# 'utf-8'
set encoding=japan
set fileencoding=japan
endif
if has('iconv')
let s:enc_euc = 'euc-jp'
let s:enc_jis = 'iso-2022-jp'
" iconvがeucJP-msに対応しているかをチェック
if iconv("\x87\x64\x87\x6a", 'cp932', 'eucjp-ms') ==# ...
let s:enc_euc = 'eucjp-ms'
let s:enc_jis = 'iso-2022-jp-3'
" iconvがJISX0213に対応しているかをチェック
elseif iconv("\x87\x64\x87\x6a", 'cp932', 'euc-jisx021...
let s:enc_euc = 'euc-jisx0213'
let s:enc_jis = 'iso-2022-jp-3'
endif
" fileencodingsを構築
if &encoding ==# 'utf-8'
let s:fileencodings_default = &fileencodings
let &fileencodings = s:enc_jis .','. s:enc_euc .',cp...
let &fileencodings = &fileencodings .','. s:fileenco...
unlet s:fileencodings_default
else
let &fileencodings = &fileencodings .','. s:enc_jis
set fileencodings+=utf-8,ucs-2le,ucs-2
if &encoding =~# '^\(euc-jp\|euc-jisx0213\|eucjp-ms\...
set fileencodings+=cp932
set fileencodings-=euc-jp
set fileencodings-=euc-jisx0213
set fileencodings-=eucjp-ms
let &encoding = s:enc_euc
let &fileencoding = s:enc_euc
else
let &fileencodings = &fileencodings .','. s:enc_euc
endif
endif
" 定数を処分
unlet s:enc_euc
unlet s:enc_jis
endif
" 日本語を含まない場合は fileencoding に encoding を使う...
if has('autocmd')
function! AU_ReCheck_FENC()
if &fileencoding =~# 'iso-2022-jp' && search("[^\x01...
let &fileencoding=&encoding
endif
endfunction
autocmd BufReadPost * call AU_ReCheck_FENC()
endif
" 改行コードの自動認識
set fileformats=unix,dos,mac
" □とか○の文字があってもカーソル位置がずれないようにする
if exists('&ambiwidth')
set ambiwidth=double
endif
** 文字コードを変更して保存する †
cp932(Shift-JIS)にするには以下のようにする。
:set fileencoding=cp932
この状態だとまだ保存してないので,:wしてやれば文字コード...
** ファイルの種類を指定したいとき
:set ft=html #htmlファイルとして色付け・インデントした...
ftは,filetypeの略。
ファイルの先頭か末尾5行以内に,
vim:set ft=html:
などと書いておくと,読み込み時に自動的に種類を指定できる...
** 編集中のファイルをRubyで加工する
[範囲指定] !ruby を使う。ファイル全体なら,
:%!ruby -e 'print ARGF.read.gsub( /before:(.*) after:(.*...
とか。
選択範囲だけ加工する場合は
:'<,'>!ruby ...
(vで選択中に:を押すと,'<,'>は自動で入力される。)
** キーボードマクロを使う
vimでは,qコマンドで一連のキー操作をレジスタに保存し,そ...
例えば,texで論文を書いていて,「true」や「my-func」のよ...
qk (レジスタkに記録開始)
dw (単語の削除)
i (入力モードに入る)
\|| (囲い)
ESC (入力モードを抜ける)
h (一文字左へ)
P (ペースト)
q (記録終了)
とすると,「カーソルの下の単語を\| |で囲む」という一連の...
あとは,文章中の識別子のところで「@k」のように入力すると...
** カーソルを点滅させない(gvim)
set guicursor=a:blinkon0
** カーソル下のファイル名を開く
例えば,hoge.txtという文字列にカーソルを合わせて,gfを押...
** abc <--> ABC
~で,カーソル下の文字の大文字と小文字を切り替えることがで...
g~[motion]で,ある範囲の文字を一気に切り替えることができ...
g~~で,現在行の大文字と小文字を切り替えることができる。
** バイナリ編集
vimでバイナリを編集したい場合,よくある16進ダンプとそれの...
xxdを使って,バイナリ編集をする方法がある。(xxdは,MinGW...
"バイナリ編集(xxd)モード(vim -bでの起動,もしくは *.b...
augroup BinaryXXD
autocmd!
autocmd BufReadPre *.bin let &binary =1
autocmd BufReadPost * if &binary | silent %!xxd -g 1
autocmd BufReadPost * set ft=xxd | endif
autocmd BufWritePre * if &binary | %!xxd -r | endif
autocmd BufWritePost * if &binary | silent %!xxd -g 1
autocmd BufWritePost * set nomod | endif
augroup END
** 私が使用している設定ファイル
#ref(.vimrc)
ページ名:
Counter: 0, today: 0, yesterday: 0
Copyright©2008 Yuji Ueno All Rights Reserved.
ログイン
ユーザ名:
パスワード:
IDとパスワードを記憶
パスワード紛失
メインメニュー
ホーム
でぶlog
資料室
最新ページ一覧
全ページ一覧
ヘルプ
フォーラム
お問い合わせ