Kの雑記

最近忘れやすいので、備忘録がわり

Viまとめ

Viのよく使うけど忘れるキー操作

VIのモード

Viは以下のモードがあるので、色々キー操作を覚える前に、自分がどのモードの操作をしているか理解すると効率的に操作を理解できる。

  • ノーマルモード
    基本のモード。移動やコピー・削除をしたりする時のモード。一番良く使われる。
  • 挿入モード
    そのまんま、文字の挿入するときのモード。
  • コマンドラインモード
    ”:”を押してコマンドラインで変換とかしたりするときに使うモード。コマンドを覚えていないとなんにもならない悲しいモード。
  • ビジュアルモード
    行単位や短形で選択して、操作が可能なモード。操作を覚えると一般的なテキストエディタのキー操作より簡単に高度な編集ができる(気がする)

変換系

移動系

  • 最初の行
    gg
  • 最後の行

置換・コピー

複数行の置換・コピー

(1) ms → 開始行をsでマーク

(2) me → 終了行をeでマーク

(3-1) 置換
  :'s,'es/置換前文字列/置換後文字列/g

(3-2)- コピー
  :'s,'ey コピー

(3-3)削除

  :'s,'ed

 

  ※:ビジュアルモードでも同じことができるし楽な気がする。(下参照)

 

改行に置換

例えば、

 a,b,c,d

となっている文字列を

a

b

c

d

と変更したい場合、","を改行に変更する必要がある。その時は、コマンドラインモードでCrtl+vの後にEnterを押すことで"^M"(改行の意味)となる。

:%s/,/^M/g

強調(ハイライト)

  • 文字列強調
    ノーマルモードでハイライトしたい文字にカーソル移動して"*"
    ※:表示でハイライトされない場合、":hlsearch"で色が変わる。消すときは":nohlsearch”
    ※:”n”で次文字、”N"で前の文字に移動する

行末で折り返さない

  • ":set nowrap" 逆に折り返す場合は ":set wrap"

ビジュアルモード

視覚的に行や文字を選択したいときに使うと便利

例えば100行目から最後まで削除したい場合、

100gg   →100行目に移動

V   →行選択。”v”(小文字のv)も可

G   →最終行に移動

d   →削除。”x”で消すのも可

これでいける。

削除するんじゃなくて、文字列変換したい場合は、最後の”d”(削除)を以下のように変えることで文字列変換ができる。

:   →コマンドラインモードに変更。これで勝手に範囲が選択される

:'<,'>s/置換前文字列/置換後文字列/g

コマンドラインモードにすると勝手に"'<,'>"が入力され範囲指定される。あとは通常の文字列置換コマンドと同じ操作で置換ができる。