気の向くままに辿るIT/ICT/IoT
UNIX/Linux

UNIX/Linux 3分で使えるvi/vim Step2

ホーム前へ次へ
viとかvimの使い方って?から始めて3分で覚えるインスタントレッスン

UNIX/Linux 3分で使えるvi/vim Step2

UNIX/Linux 3分で使えるvi/vim Step2

 UNIX/Linux及びシェルで使うエディタといえば数ありますが、軽量で有事の際にも使える可能性が高いvi/vimは覚えておくにこしたことはありません。

 わかっちゃいるけど面倒くさい、とりあえず3分で使えるvi/vim Step2講座。

 前のページUNIX/Linux 3分で使えるvi/vim Step1の続きです。

カーソルキー移動

 vi/vimは、カーソル移動が一風変わっていて4つの文字キーを使います。

k
hl
j

 カーソル移動は、(他のモードなら[Esc]を押した)編集モード状態の時、キーボードの矢印キーに相当するのが[h][j][k][l](エル)キーでそれぞれ[左]、[下]、[上]、[右]となっていて右手で操作することが想定([f]と[j]に左右の人差し指をのせたホームポジションで使うことを前提と)されています。

ページ内移動

 ページ先頭       ← { 

 

 あいうえお 

 ↑         ↑  

  0           $ 

 

 ページ末尾       ← } 

 ページ先頭への移動は { 、ページ末尾への移動は } 、段落ごとの移動は[Shift]+ { で上の段落へ、[Shift]+ } で下の段落へ、行の先頭への移動は数字の[0]、行末への移動は[$]であり、これらも編集モードで行います。

コピー・削除・貼り付け・置換各種編集

 各種編集作業ももちろん編集ですから編集モードで行コピーは[yy]または[Y]、行削除は[dd]または行先頭で[D]、カーソル行の後ろの行へのペーストは[p]、前の行へのペーストは[P]、カーソル行の前に空行を挿入するには[O]、後ろに挿入は[o](それぞれアルファベットのオー)です。

 文字の削除は[x]、削除に限らず、やり直しは[u]です。

操作用途キー
移動ページ先頭 { 
ページ末尾 } 
上の段落  Shift  + { 
下の段落  Shift  + } 
行頭 0 (ゼロ) 
行末 $ 
 k 
 j 
 h 
 l (エル) 
行コピー行コピー yy または Y 
文字コピー単一文字コピー  yl  
(同上)複数文字コピー  (n) y l  / nは文字数 
範囲コピーカーソル位置から行頭  y0 (ゼロ) 
カーソル位置から行末  y$  
削除カレント行の改行(行連結)  J  
  dd  
カーソル位置から行頭  d0 (ゼロ) 
カーソル位置から行末  D  
  d$  
カーソル位置の文字  x  
  dl  
(同上)複数文字  (n) x  
  (n) d l / nは文字数 
一文字前  X  
  dh  
ペースト/貼り付け行の上  P  
行の下  p  
カーソル位置  p  
追加カーソル位置の直後に追加  a  
行末に追加  A  
挿入空行挿入/行の上  O (オー) 
空行挿入/行の下  o  
カーソル位置に文字挿入  i  
行先頭に文字挿入  I  
前回の行先頭挿入位置  g I  
前回挿入位置の1つ後ろ
(複数行可)
  g i  
置換挿入カーソル位置  s  
  cl  
複数行  S  
  cc  
カーソル位置から行末  C  
連続置換  R  
 [Enter]で順次置換
仮想連続置換
画面上のみ
  g R  
 [Enter]で順次置換

 コピー、削除、やり直し他いくつかのコマンドは、複数文字、複数行、複数回の場合は直前に数字[0-9]キーを押し、例えばカーソル行を含む3行をコピーしたい場合には[3yy]や[3Y]とします。

編集中のテキストファイル内検索

 vi/vimでは、more/lessなどのページャコマンドやmanコマンド等と同様、編集中のテキストファイル内の検索機能として編集モードから:(コロン)を入力してコマンドモードに切り替えて後ろから前へ検索(前方一致検索)、または、前から後ろへ検索(後方一致検索)することができるようになっています。

 : ? キーワード        前方一致検索(ページ末尾から先頭に向かって検索)

 : / キーワード        後方一致検索(ページ先頭から末尾に向かって検索)

 コマンドモードから前方一致検索はクエスチョンマーク(疑問符)?1つ、後方一致検索はスラッシュ1つ/を入力して、それぞれキーワードを入力してEnterキーを押すとページ末尾、ページ先頭から1つめのキーワードの1文字めにカーソルが移動、点滅し、続けて次を検索するにはn(next)キーを入力します。

vi/vimの豊富な編集機能

 vi/vimには上記以外のキー操作やコマンドが、まだまだ数え切れないくらいありますが、全て把握して使っている人はいても数える程度でしょうし、上記くらい知っていれば、まず普段の編集に困ることはないでしょう。

 全く触れていないものの1つにコマンドモードで利用できる単純な検索、sedコマンドを使った検索置換などもあります。

 : 1,$ s/abc//g     ← 1行めから最終行の範囲にあるabcを全て削除 

コマンドラインにもvi/vimモードがある

 また少なくともシェルにbashを選んだ場合、その入力方法をviモードとemacsモードから選択でき(set -o vi/set -o emacs)、デフォルトはemacsモードです。

 viモードにはコマンドライン入力においても編集モード/入力モードの2つの切り替えがあるので注意が必要です。

 viモードの場合、コマンドライン上で変更した直後は入力モードですが、その後[Esc]キーを押した場合には、編集モードに切り替わりますし、.bashrcや.bash_prifileなど設定ファイルでviにセットしてターミナルやターミナルエミュレータを立ち上げた場合、初期状態はviエディタ同様編集モードです。

 いずれにしても入力以外の編集は編集モードでないとできませんから編集モードを使い、入力する場合には[i]キーで入力モード、挿入するなら[a]キーで挿入モード、コマンド入力なら[:]キーでコマンドモード、入力モードや挿入モード、コマンドモードから編集モードへの切り替えには[Esc]キーを使います。

vi/vim文字コード・ファイルエンコーディング自動認識設定

 vi/vimは文字コード設定、ファイルエンコーディング設定、更にはファイルエンコード方式を自動認識でき、それぞれ予め設定ファイルに記述しておいたり、vi/vim編集中に設定することができ、環境変数や各種設定ファイルなどshellを含めた各種言語設定と併せて設定しておくことにより、文字化けもなく日本語を正しく認識、編集、表示することができます。

LINK

ホーム前へ次へ