読むだけでちょっと賢くなる、架空のまとめスレ

【疑問】vi で文字を打ったら変なことになった。モード・移動・i/a/o・dd/yy/p【LPICレベル1】

16レスカテゴリ:Linux
1: 名無しさん

サーバーで vi を開いて文字を打ったら、カーソルが飛んだり行が消えたりした
普通に打てへんの?

2: 名無しさん

前提のおさらい。コマンドは「コマンド オプション 引数」で打つ。vi ファイル名 で開く

3: 名無しさん

>>1
vi にはモードがある。開いた直後はノーマルモード(コマンドモード)で、打った文字は文字じゃなくて命令になる

4: 名無しさん

>>3
3つのモード
ノーマルモード:移動・削除・コピーなど
挿入モード:文字を入力する。Esc でノーマルモードに戻る
コマンドラインモード:ノーマルモードで : を打つ。保存や終了、置換

5: 名無しさん

>>4
挿入モードに入るキー
i カーソルの前から
a カーソルの後ろから
o 下に新しい行を作って
O 上に新しい行を作って
I 行の先頭から、A 行の末尾から

6: 名無しさん

>>3
カーソルの移動は?矢印キーでええん?

7: 名無しさん

>>6
矢印も使えるけど、試験に出るのは h(左)j(下)k(上)l(右)。ほかに 0 行頭、$ 行末、gg 先頭の行、G 最後の行、数字G その行

8: 名無しさん

>>7
j が下で k が上。キーボードで並んでるから慣れたら速い

9: 名無しさん

>>1
さっき行が消えたのは?

10: 名無しさん

>>9
たぶん dd を打ったんやな。ノーマルモードの削除とコピー
x カーソルの1文字を削除
dd 1行削除(3dd で3行)
yy 1行コピー(ヤンク)
p カーソルの後ろ(行なら下)に貼り付け、P 前(上)に

11: 名無しさん

>>10
dw で1単語削除、d$ で行末まで。d の後ろに移動の命令を付けると、その範囲を消すんやな

12: 名無しさん

>>10
間違えたら?

13: 名無しさん

>>12
u で元に戻す(undo)。dd で消した行は p で貼り付けられるから、消すとコピーを兼ねてる

14: 名無しさん

>>1
Debian で vi を打ったら何が動いてるん?

15: 名無しさん

>>14
この環境では vi の実体が /usr/bin/vim.tiny(vim の小さい版)やった。Red Hat 系では vim の最小構成のパッケージが入ってることが多い。中身は違っても、ここの基本の操作は同じ

16: 名無しさん

>>3
打つ前に i、終わったら Esc。消すのは dd、コピーは yy、貼るのは p。まずこれだけ覚える

管理人のひとこと