S-JIS[2003-05-19/2007-01-16] 変更履歴

viエディター操作

UNIXでエディタと言えば、vi(vim)かemacs。viのキー操作を覚えておけば、だいたいどこでも使える。 けど独特な上に量が多すぎて覚えにくいんだなー(嘆)
とりあえず、重要そうなキーを太字にしてみました。

キー操作
  a b c d e f g h i j k l m n o p q r s t u v w x y z 0                   - ^   @ ; : , . /   SPC Enter DEL ESC
(Shift+) A B C D E F G H I J K L M N O P Q R S T U V W X Y Z   # $ % & ' ( ) { } + ~ |     * < > ? _        
Ctrl+ a b c d e f g h i j k l m n o p q r s t u v w x y z                                                

キー入力の前に数値を入れておくことにより、デフォルトの動作を拡張した動きがされる操作もある。
 例:「12h」…左へ12文字移動する。
 例:「3dd」…3行削除(カット)する。(「p」で貼り付けられる)

機能 キー 数値が指定されない場合の動作 数値 デフォルト 数値が指定された場合の動作 更新日
カーソル
移動
h カーソルを左へ移動する。 文字数 1文字 その文字数分移動する。  
j カーソルを下へ移動する。  
k カーソルを上へ移動する。  
l(エル) カーソルを右へ移動する。  
Ctrl + h カーソルを左へ移動する。「h」と同じ。 2005-03-24
SPC カーソルを右へ移動する。「l」と同じ。 2005-03-24
Ctrl + p カーソルを上へ移動する。「k」と同じ。 2005-03-23
Ctrl + n
Ctrl + j
Enter
Ctrl + m
カーソルを下へ移動する。「j」と同じ。 2005-03-24
w カーソルを次の単語の先頭へ移動する。 単語数 1語 その単語数分移動する。 2005-03-17
b カーソルを前の単語の先頭へ移動する。 2005-03-17
Shift + w カーソルを次の単語(スペース区切り)の先頭へ移動する。 2005-03-23
Shift + b カーソルを前の単語(スペース区切り)の先頭へ移動する。 2005-03-23
e カーソル位置の単語の末尾へ移動する。 2005-03-23
Shift + e カーソル位置の次の単語の末尾へ移動する。 2005-03-23
0(ゼロ) カーソルを行の先頭へ移動する。       2005-03-23
^ カーソルを行の先頭(スペース以外の位置)へ移動する。       2005-03-23
$ カーソルを行の末尾へ移動する。       2005-03-23
|(縦棒) カーソルを1桁目の位置(行の先頭)へ移動する。 桁番号 1桁目 カーソルのある行の中の指定された桁位置へ移動する。 2005-03-23
同じ行内のカーソル位置以降で、指定された文字がある場所へ移動する。さらに「;」「,」で次へ移動する。 n文字目 1文字目 指定された文字のn個目の位置へ移動する。 2005-03-23
Shift + f 同じ行内のカーソル位置より前で、指定された文字がある場所へ移動する。さらに「;」「,」で次へ移動する。 2005-03-23
t 同じ行内のカーソル位置以降で、指定された文字がある場所の1文字前へ移動する。さらに「;」「,」で次へ移動する。 2005-03-23
Shift + t 同じ行内のカーソル位置より前で、指定された文字がある場所の1文字後ろへ移動する。さらに「;」「,」で次へ移動する。 2005-03-23
;(セミコロン) f」「F」「t」「T」の次の候補へ移動する。 2005-03-24
,(カンマ) f」「F」「t」「T」の前の候補へ移動する。「;」の逆方向。 2005-03-24
% カーソルが括弧(){}の上にある時、対応する括弧の位置へ移動する。
丸括弧の場合は、カーソル位置以降で一番近い括弧が対象となる。
      2005-03-23
- カーソルを前の行の先頭(スペース以外の位置)へ移動する。 行数 1行 その行数分移動する。 2005-03-23
+ カーソルを次の行の先頭(スペース以外の位置)へ移動する。 2005-03-23
_(アンダーバー) 現在行の先頭(スペース以外の位置)へ移動する。 行数 1行 n-1行分下の行の先頭へ移動する。 2005-03-24
) 次の文の先頭へ移動する。文は、.!?+スペースで区切られた固まり 文数 1文 その文の数だけ移動する。 2005-03-23
( 前の文の先頭へ移動する。 2005-03-23
} 次の段落の先頭へ移動する。段落は、空行で終わっている固まり 段落 1段落 その段落数だけ移動する。 2005-03-23
{ 前の段落の先頭へ移動する。 2005-03-23
Shift + h 現在表示されている画面内の先頭行の先頭へ移動する。 行数 1行目 上からn行目へ移動する。 2005-03-23
Shift + m 現在表示されている画面内の中央行の先頭へ移動する。     数値は無視され、常に中央行へ移動する。 2005-03-23
Shift + l(エル) 現在表示されている画面内の最終行の先頭へ移動する。 行数 1行目 下からn行目へ移動する。 2005-03-23
Ctrl + e 1行だけ上へスクロールする。 行数 1行 その行数分スクロールする。 2005-03-23
Ctrl + y 1行だけ下へスクロールする。
Ctrl + u 半画面分(※)上へスクロールする。 行数 半画面(※) その行数分スクロールする。
※一度指定すると、以降指定しない場合は半画面ではなく最後に指定した行数分スクロールするようになる。
2005-03-23
Ctrl + d 半画面分(※)下へスクロールする。 2005-03-23
Ctrl + b 1ページ分上へスクロールする。 ページ数 1ページ 指定されたページ数分スクロールする。  
Ctrl + f 1ページ分下へスクロールする。  
gg ファイル内の先頭行へ移動する。gには他の使い方もある23 行番号 先頭行 指定された行へ移動する。 2005-03-24
Shift + g ファイル内の最終行へ移動する。 最終行 2003-09-19
n /」や「?」で指定した検索条件の、次の検索結果へ移動する。 単語数 1語 n個目の検索結果へ移動する。 2005-03-23
Shift + n /」や「?」で指定した検索条件の、前の検索結果へ移動する。 2005-03-23
* カーソル位置にある単語を検索条件に指定した「/」とほぼ同じ。(単語単位の完全一致検索) 2005-03-23
# *」に対し、逆方向の検索になる。(「?」に該当) 2005-03-23
'(シングルクォート) m」でマークした(指定されたラベルの)行の先頭へ移動する。 マークの位置と一覧は「:marks」で参照可。       2005-03-24
補助 m カーソルのある行に、指定した文字をラベルとするマークをつける。「'」でこの行へ移動できるようになる。
マークは英字1文字。大文字と小文字は区別される
      2005-03-23
ga カーソル位置の文字のASCIIコードを表示する。gには他の使い方もある13       2005-03-24
Ctrl + g 編集中のファイル名とカーソルのある現在行(と全行数)と桁位置を一時的に表示する。       2005-03-23
Ctrl + l(エル) 画面の再描画を行う。例えばTeratermで漢字コードの指定を間違えていたら、設定し直した後に「Ctrl+L」を押すことで再描画され、正しい漢字で表示される。       2005-03-24
挿入 i インサートモードになる。次から打つ文字が挿入されていく。終えるときはESCキー。 繰り返し数 入力文字列 数字を入力してからインサートモードになると、文字列を入れ終わってESCキーを押した瞬間に入力した文字列入力した数分に増える。
例:「3i」→「ab」→ESC⇒「ababab」
2007-01-15
a カーソル位置の右の位置からインサートモードになる。 2007-01-15
Shift + i 行頭に移動し、インサートモードになる。 2007-01-15
Shift + a 行末に移動し、インサートモードになる。 2007-01-15
o カーソルのある行の下に新しい行を追加して、インサートモードになる。        
Shift + o カーソルのある行の上に新しい行を追加して、インサートモードになる。       2004-12-29
s カーソル位置の1文字を削除(DEL)して、インサートモードになる。 文字数 1文字 指定された文字数を削除(DEL)してインサートモードになる。 2005-03-23
Shift + s カーソルのある行を削除して、インサートモードになる。 行数 1行 指定された行数を削除してインサートモードになる。 2005-03-23
cc dd」と同じ動作(行を削除)をしてからインサートモードになる。(「S」と同じ)       2005-03-23
c移動操作 d」と同じ動作(削除)をしてからインサートモードになる。       2005-03-23
変更 r リプレースモードになる。カーソルの位置の文字が、次に打つ1文字に変わる。 連続して変えたい場合は、「R」。 文字数 1文字 指定した文字数分置き換える。
例:abcde→ 3rz →azzze
2005-03-24
Shift + r リプレースモードになる。(「r」と違って、ESCキーを押すまでずっと) 単語数 1語 指定した語数分置き換える。
例:abcdef→ 2Rxy →axyxyf
2005-03-24
~(ティルド) カーソルのある場所の英文字に対し、大文字⇔小文字の変換を行う。変換後、カーソルは右へ移動する。 文字数 1文字 指定された文字数分の変換を行う。 2005-03-23
g~移動操作 現在のカーソル位置と、移動操作によって移動した先の間の英文字に対し、大文字⇔小文字の変換を行う。       2005-03-24
gu移動操作 現在のカーソル位置と、移動操作によって移動した先の間の英文字を小文字に変換する。       2005-03-24
gU移動操作 現在のカーソル位置と、移動操作によって移動した先の間の英文字を大文字に変換する。gには他の使い方もある12       2005-03-24
& :%」で行った置換を、もう1回行う。 単語数 1語 指定された回数の置換を行う。 2005-03-23
削除
カット
DEL カーソルのある場所の文字を削除する。インサートモード中でも使用可能。行末で削除すると、次の行と結合される。        
x カーソルのある場所の文字を削除する。 文字数 1文字 その文字数分削除する。  
Shift + x カーソルのある場所の前の文字を削除する。(バックスペース)  
Shift + d カーソル以降行末までを削除する。(「d$」と同じ) 行数 ≒1行 2以上の場合、追加してn-1行削除する。 2005-03-23
dd カーソルのある行を削除する。 行数 1行 その行数分削除する。  
d移動操作 現在のカーソル位置と、移動操作によって移動した先の間を削除する。       2005-03-23
コピー
ペースト
yy 行をバッファにコピーする。 行数 1行 その行数分コピーする。  
y移動操作 現在のカーソル位置と、移動操作によって移動した先の間をバッファにコピーする。       2005-03-23
Shift + y 行をバッファにコピーする。(「yy」と同じ) 行数 1行 その行数分コピーする。 2005-03-23
p バッファの内容を貼り付ける。(バッファの内容が行の時は下に、文字や単語の時は右に)        
Shift + p バッファの内容を貼り付ける。(バッファの内容が行の時は上に、文字や単語の時は左に)       2005-03-23
可視選択 v 文字単位の範囲選択を開始する。「d」「y」「c」といったキーで終了すると、その動作が選択した範囲に対して行われる。その後、「p」で貼り付けられる。       2005-03-24
Shift + v 行単位の範囲選択を開始する。「d」「y」「c」といったキーで終了すると、その動作が選択した範囲に対して行われる。       2005-03-24
Ctrl + v ブロック選択を開始する。「d」「y」「c」といったキーで終了すると、その動作が選択したブロックに対して行われる。       2005-03-23
アンドゥ
リドゥ
u UNDO。変更を元に戻す。 回数 1回 指定した回数分さかのぼる。 2005-03-24
Ctrl + r Redo。「u」で戻しすぎた変更を元に戻す。 指定した回数分進む。 2005-03-24
.(ピリオド) 直前のキー入力と同じ動作をもう1度行う。 指定した回数分実行する。 2005-03-24
Shift + u 最後に行った行の変更を元に戻す。別の行を変更するまで有効。「U」を何度も押すと、変更前と変更後が交互に繰り返される。       2005-03-23
検索 /〔文字列〕 文字列の検索を行う。文字列を省略すると、前回指定した文字列となる。「n」や「N」で次候補へ移動する。        
?〔文字列〕 /」と同じだが、ファイルの先頭に向かって検索する。        
その他 Shift + j 次の行を現在行に結合する。 行数 1行 カーソルのある行を含んだ指定行数分が結合されて1つの行になる。  
>> 行頭にタブを挿入する。 行数 1行 カーソルのある行から指定した行数分が対象となる。  
<< 行頭のタブを削除する。  
q キー入力の記録を開始する。再度qを入力することで終了する。その記録は、指定した文字をラベルとして記憶される。「@」で再現、「:@」で記録内容を確認する。       2005-03-24
@ q」で記録したキー入力を再度実行する。 回数 1回 指定した回数実行する。 2005-03-24
@@ 最後に実行した「@」を再度実行する。 2005-03-24
Shift + z+z (ファイルを保存して)viを終了する。「:x」と同じ。       2005-03-24
Shift + z+q ファイルを必ず保存してviを終了する。「:wq」と同じ。       2005-03-24
Ctrl + z viをサスペンドする…これはviでなくUNIXのキー操作だ!(爆)       2005-03-23
:(コロン) コマンドモードになる。        
ESC (様々なモードを)キャンセルする。何か間違えたら、ESCキーを連打。その後、「u」で戻すといいかも。        

x」や「d」で削除すると、削除した内容がバッファにコピーされて「p」でペーストできるようになる。


[2005-03-23/2006-05-27]

移動操作

d(削除)」「y(コピー)」「c(削除&挿入)」 「g~(英大小文字変換)」といった操作では、その文字の後にカーソル移動(「h」や「$」等)の文字を入れることにより、カーソルの現在位置と移動後のカーソル位置の間の範囲を操作対象(削除やコピー)とすることが出来る。

キー入力例
動作 更新日
d$ カーソル位置から行末までを削除する。「D」と同じ。  
d2gg ファイル内の2行目からカーソル位置までを削除する。  
dG カーソル位置からファイルの最終行までを削除する。  
12d+
d12+
カーソルのある行から12行分を削除する。  
dw カーソル位置にある単語を削除する。 2006-05-27
yl カーソルのある位置の1文字をコピーする。  
y'a aという名のマークまでの間をコピーする。  

コマンド

コマンドは、:(コロン)」を押した後に入力し、最後にEnterキーを押下することで実行する。

コマンド一覧
キー 動作 更新日
help ヘルプを表示する。ヘルプの終了は「:q」。僕の環境は英語だったけど… 2005-03-24
q! viの終了。「!」を付けると、ファイルを保存せずに終了する。  
qa! 複数ファイルを編集している場合、全ファイルを保存せずに終了する。 2005-03-24
x ファイルを保存してviを終了する。(変更が無い場合は保存しない) 2005-03-24
wq〔!〕 ファイルを保存してviを終了する。(変更されていなくても必ず保存)
「!」を付けると、読込専用オープンであっても強制保存(もちろん書込権限は必要)
2006-02-02
w 〔ファイル名〕〔!〕 ファイルを保存する。「!」を付けると、読込専用オープンであっても保存する。 2006-02-02
r ファイル名 ファイルを読み込み、カーソルのある行の下へ追加する。 2005-03-23
%s/変換前文字列/変換後文字列/g 文字列の置換を行う。「&」で同条件の再置換を行える。 2005-03-23
数値 指定された行番号の行へ移動する。例えば「:1」で先頭行へ移動する。  
@ q」で記録されたキー入力内容を表示する。 2005-03-24
marks 〔マーク…〕 m」で記憶したマークを表示する。 2005-03-24
args 複数ファイルを編集している場合、その一覧を表示する。 2005-03-23
n 複数ファイルを編集している場合、次のファイルへ移る。 2005-03-23
p 複数ファイルを編集している場合、前のファイルへ移る。 2007-01-16
開始行,終了行 d 範囲行を削除する。 2005-03-23
開始行,終了行 y 範囲行をコピーする。コピーのことをyankというらしい 2005-03-23
開始行,終了行 w ファイル名 範囲行を保存する。 2005-03-23

なお、漢字を扱うには、環境変数LANGを指定しておく必要があるらしい…。[2005-12-11]


技術メモへ戻る / UNIXコマンドへ戻る
メールの送信先:ひしだま