Vim の変更点


#author("2020-11-14T21:09:14+09:00","default:k1rou","k1rou")
*Vim [#n2c4b70d]
#author("2021-11-15T04:13:03+00:00","default:k1rou","k1rou")
*Vim とは [#y92b1238]
-Vi Improved

**Vim とは [#y92b1238]
-Linuxで利用できる[[テキストエディタ]]
-viエディタを機能拡張したもの
-コマンドモードと入力モードを切り替えながら使う

*viの操作 [#fe4a55dc]
**viの起動 [#w5351f73]
-vi <file-name> ※ファイル名を指定して起動
--vi -R <file-name> ※読み取りモードで起動(編集不可)
-vi ※空の新規ファイルを開いて起動

**ファイルの操作(Exコマンド) [#q804cb81]
-保存
 :w
 :w <file-name>

-終了
 :q ※変更がある場合は保存するか確認する

--保存しないで終了
 :q!

--保存して終了
 :wq
 :x

-ファイルを開く
 :e <file-name>

-最後に保存した状態に復帰する
 :e!

-指定したファイルの内容をカレント行の下に読み込む
 :r <file-name>

-シェルコマンドを実行
--viを終了しないでシェルコマンドを実行
 :!<command>

--シェルコマンドを実行して実行結果をカレント行の下に挿入する
 :r!<command>

**ファイルの操作 [#qfb01985]
-保存して終了
 ZZ ※:wqと同じ

**カーソルの操作 [#g38435a1]
-上下左右 ※カーソルキー(↑↓←→)も同じ
 j ※上に移動
 k ※下に移動
 h ※左に移動
 l ※右に移動
--数字に続けて入力すると指定した回数分繰り返す
 2h ※2文字左に移動

-単語
 b ※前の単語の先頭
 e ※単語の末尾
 w ※次の単語の先頭

-カーソル行
 0 ※先頭
 ^ ※先頭(先頭が空白の場合は、先頭の文字)
 $ ※末尾

-カーソル行の前行/次行
 - ※前の行の先頭
 [Enter] ※次の行の先頭

-画面の最上行/下行
 H ※最上行
 M ※中央行
 L ※最下行

-ファイルの先頭/末尾
--先頭
 gg
 :0
--末尾
 G
 :$

-指定した行
 数字 ※カーソル行から指定した数
 :数字 ※行番号
 数字G ※ファイルの先頭行番号

-括弧の開始/終了
 % ※カーソル位置の括弧に対応する括弧の開始/終了

**画面の操作 [#p20f30ef]
-1画面
 Ctrl+b ※上
 Ctrl+f ※下

-半画面
 Ctrl+u ※上
 Ctrl+d ※下

**文字の編集 [#g0c58065]
***編集の操作 [#r2562a3d]
-元に戻す
 u
-やり直し
 Ctrl+r
-直前の操作の繰り返し
 .

***文字の挿入(入力モード) [#xf6e6836]
-カーソル位置で入力モード
 i ※カーソル位置の左
 a ※カーソル位置の右

-行の先頭/末尾で入力モード
 I ※カーソル行の先頭
 A ※カーソル行の末尾

-行を追加して入力モード
 o ※カーソル行の下に行を追加
 O ※カーソル行の上に行を追加

***文字の上書き [#o4171c32]
-1文字のみ
 r[char] ※カーソル位置の1文字を、入力した1文字に

-入力した文字列に ※Escで文字列の入力を終了
 R[string] ※カーソル位置の文字から右に、入力した文字列と同じ文字数を入力した文字列に
 s[string] ※カーソル位置の1文字を、入力した文字列に
 S[string] ※カーソル行全体を入力した文字列

***文字の削除 [#v7c30d6c]
-1文字を削除
 x ※カーソル位置の1文字
 X ※カーソル位置の左の1文字
 
 dl ※「x」と同じ

--数字に続けて入力すると指定した回数分繰り返す
 3x ※カーソル位置の文字を含む右の3文字

-単語を削除
 dw ※カーソル位置の単語を削除

-行を削除
 dd ※カーソル行全体を削除(改行含む)
--数字に続けて入力すると指定した回数分繰り返す
 3dd ※カーソル行を含む下の3行

-カーソル位置から同じカーソル行の指定した場所までを削除
--行頭/行末まで
 d^ ※行頭までを削除
 d$ ※行末までを削除
 
--左右の最も近いキー入力した文字までを削除
 df[char] ※順方向(右)
 dF[char] ※逆方向(左)

**検索 [#s34f8e0f]
***文字列 [#t838bfbd]
-キー入力で指定した文字列を検索
 /[string] ※下方向
 ?[string] ※上方向

-カーソル位置の文字列を検索
 * ※下方向
 # ※上方向

-次の文字列を検索する
 n ※順方向
 N ※逆方向

***文字 [#p53eb2bd]
-カーソル行のみ
 f[char] ※順方向(右)
 F[char] ※逆方向(左)

***文字列の置換 [#e572c53a]
-置換対象:カーソル行のみ
 :s/[検索文字]/[置換文字]/ ※最初に検出した文字列のみ
 :s/[検索文字]/[置換文字]/g ※全ての文字列

-置換対象:全ての行
 :%s/[検索文字]/[置換文字]/ ※最初に検出した文字列のみ
 :%s/[検索文字]/[置換文字]/g ※全ての文字列

-置換対象は指定した範囲の行
 :[開始行番号],[終了行番号]s/[検索文字]/[置換文字]/g

-検索文字列が複数あった場合
--末尾に"g"なしは、最初に検出した文字列のみ
--末尾に"g"ありは、全ての文字列




**コピー、削除、ペースト [#s91e4d58]
-編集内容を指定する1文字を入力後に、カーソル操作で対象範囲を指定する。
-編集内容のどれを指定しても、対象範囲で指定した対象の値はバッファに保存され、ペーストすることができる。

***編集内容を指定 [#bc90533b]
 y ※コピー
 d ※削除
 c ※削除(削除後に入力モード)

***対象範囲を指定(行単位の操作) ※編集内容がコピー(y)の例 [#c9a1ed88]
-編集内容と同じ文字を2回入力した場合は、カーソル行全体を指定
 yy

-カーソル操作で対象範囲を指定
 yj ※カーソル行と下の1行
 yk ※カーソル行と上の1行
 y数値j ※カーソル行と、下の指定した数分の行
 y数値k ※カーソル行と、下の指定した数分の行

***対象範囲を指定(文字単位の操作) ※編集内容がコピー(y)の例 [#dc2d644d]
-カーソル操作で対象範囲を指定
 yh ※カーソル位置の左1文字
 yl ※カーソル位置の右1文字
 y数値h ※カーソル位置の左、指定した数分の文字
 y数値l ※カーソル位置の右、指定した数分の文字
 y0 ※カーソル位置の左、全ての文字(「y^」と同じ)
 y$ ※カーソル位置の右、全ての文字

***ペースト [#le68182c]
-行単位の操作の場合
 p ※カーソル行の下にペースト
 P ※カーソル行の上にペースト
-文字単位の操作の場合
 p ※カーソル位置の右にペースト
 P ※カーソル位置の左にペースト
-複数個のペースト
--pまたはPの前に数値を指定すると、指定した数分をペーストする。

***補足 [#d5959b96] 
 cc[string] ※カーソル行全体を削除(改行は削除せず、入力モード)
 cw[string] ※
 cf[char] [string] ※
 
 D ※「d$」と同じ。カーソル位置の右、全ての文字を削除
 C ※「c$」と同じ。カーソル位置の右、全ての文字を削除(削除後は入力モード)

**範囲指定 [#t1e3b242]
***範囲指定(ビジュアルモード) [#ob979e0d]
-v ※ビジュアルモードに切り替わり、カーソル操作で範囲を指定する
--d ※指定した範囲の文字を削除

***範囲指定(マーク) [#e1fcc515]
-下記操作による範囲指定後に、各編集の操作を実施
++範囲の開始行で:ms
++範囲の終了行で:me

-複数行のコピー [#a4a4bf1b]
++「:'s,'ey」と入力し、Enter押下
++貼り付け先で:Shift + p

-複数行の削除 [#a69d6aff]
++「:'s,'ed」と入力し、Enter押下

-範囲指定の置換 [#d307a0c6]
++「:'s,'es/置換される文字列/置換する文字列/g」と入力し、Enter押下

**入力補完 [#tc466184]
 Ctrl+p

**設定 [#rc38b1c0]
***viを起動中のみ(終了すると設定が消える) [#x909620a]
-行番号
--表示
 :set number
 :set nu
--非表示
 :set nonumber
 :set nonu

-タブ幅
 :set ts=<number>

***常時の設定 [#j70f79ce]
-設定ファイル
--~/.exrc ※viエディター
--~/.vimrc ※Vim

-設定ファイルへの記述
--コマンドの頭":"を除いた状態で記述する

**チュートリアル [#s130a47a]
*チュートリアル [#s130a47a]
-vimtutor
--viエディタの操作をチュートリアルで学習できる

--パッケージ
---vim-enhanced パッケージ ※CentOS
---vim パッケージ ※Ubuntu


**関連用語 [#k34c6f0c]
*関連用語 [#k34c6f0c]
-[[Linuxコマンド]]
-[[Linuxのファイル編集]]
-[[Elvis]]