第 1 章、vi テキストエディタ#
-
簡単な歴史的視点
-
ファイルの開閉
vi filename、編集ZZ、ファイルを保存:w、保存:w new-filename、名前を付けて保存:w!、強制書き込み:e!、再開:q!、強制終了:!rm junk-file:!df
-
vi を学ぶ唯一の方法は練習することです。
第 2 章、簡単な編集#
-
カーソルの移動
- 単一の移動:
h、j、k、l、彼らは最悪です!私はneo キーボードレイアウトを持っています。 - 数値引数: 1、2、...
- 行内の移動:
0、行の先頭に移動$、行の末尾に移動^、最初の非空文字に移動
- テキストブロックによる移動
w,b、単語ごとに移動、前方、後方、それぞれ。W,B、大きな単語ごとに移動、前方、後方、それぞれ。 "-" で接続された単語は 1 つとして扱われます。8G、8 行目に移動G、ファイルの末尾に移動gg、1Gのように
- 前の / 次の行の最初の文字に移動:
-、+
- 単一の移動:
-
簡単な編集
a、追加;(必要ない、私はこれらのキーを他の用途にカスタマイズします)i、挿入;c、変更;cw, cb、単語を変更、前方、後方、それぞれc2w、2 単語を変更、前方c^、最初の非空文字にc0, c$、行の先頭、末尾に、またはc[Home]、c[End]を使用
d、削除;dw、単語ごとにdb、単語ごとに、後方dd、行を削除d$、d[End]、D、行の末尾まで削除dto、dTx、"x" まで(含まない)削除、前方 / 後方d/th、最初の "th" の一致まで削除diw、現在の単語を削除di(、現在の括弧内を削除
s、置換s(1 文字以上)、S(行全体)。
x、X、1 文字を削除、前方、または後方、それぞれ(必要ない)xP、XP、削除して戻すxp、Xp、2 文字を入れ替える
y、ヤンク;p、ペースト;$p、行の末尾にペースト0P、^P、行の先頭にペースト
-
vi コマンドの一般的な形式
cc、dd、yy(command)(text object)(command)(number)(text object)(number)(command)(text object)cc、行全体を変更C、c$のように~、ケースを変更
-
その他
- 最後のコマンドを繰り返す
.
- 元に戻す、やり直す
u、C-r、U、evil-mode では異なる動作のようです
- 挿入コマンドの数値引数:例
4i<space><Esc>
- 最後のコマンドを繰り返す
-
注意
cc、dd、yy、行に適用C、D、Sは現在の位置から末尾に適用され、Yは行全体に適用C===c$、D===d$、しかしY===yy、y$ではなく
-
全体
+------------------------------+------------------------------+------------------------------+------------------------------+ | テキストオブジェクト | 変更 | 削除 | コピー | +------------------------------+------------------------------+------------------------------+------------------------------+ | 単語1 | cw | dw | yw | +------------------------------+------------------------------+------------------------------+------------------------------+ | 単語2、カウントしない | 2cWまたはc2W | 2dWまたはd2W | 2yWまたはy2W | | 句読点 | | | | +------------------------------+------------------------------+------------------------------+------------------------------+ | 単語3、後方 | 3cbまたはc3b | 3dbまたはd3b | 3ybまたはy3b | +------------------------------+------------------------------+------------------------------+------------------------------+ | 行1 | cc | dd | yyまたはY | +------------------------------+------------------------------+------------------------------+------------------------------+ | 行の末尾に | c$またはC | d$またはD | y$ | +------------------------------+------------------------------+------------------------------+------------------------------+ | 行の先頭に | c0 | d0 | y0 | +------------------------------+------------------------------+------------------------------+------------------------------+ | 単一文字 | r | xまたはX | ylまたはyh | +------------------------------+------------------------------+------------------------------+------------------------------+ | 5文字 | 5s | 5x | 5yl | +------------------------------+------------------------------+------------------------------+------------------------------+ -
例
r、dd、P、cw、x
エディタを使うとページをスクロールでき、 スクリーンエディタを使うとページをスクロールでき、 カーソルを移動し、行を削除し、挿入 カーソルを移動し、行を削除し、挿入 文字を追加し、さらに編集結果を 文字を追加し、さらに編集結果を 作成しながら見ることができます。 作成しながら見ることができます。 ファイルを読みながら変更を加えることができるため、 スクリーンエディタは非常に人気があります。 印刷されたコピーを編集するように、 ファイルを読みながら変更を加えることができるため、 スクリーンエディタは非常に人気があります。 印刷されたコピーを編集するように。P、p、.
スクリーンエディタを使うと スクリーンエディタを使うと ページをスクロールできます。 ページをスクロールできます。 カーソルを移動できます。 スクリーンエディタを使うと 行を削除できます。 カーソルを移動できます。 スクリーンエディタを使うと 行を削除できます。J
スクリーンエディタを使うと スクリーンエディタを使うとページをスクロールでき、カーソルを移動 ページをスクロールでき、カーソルを移動
第 3 章、急いで移動する#
-
スクリーンによる移動
- スクリーンのスクロール:
C-b、C-f、C-u(emacs evil-mode では動作しない)、C-d、C-y、C-ez<Enter>、z.、z-、上部 / 中央 / 下部に移動し、そこにスクロールします(emacs のrecenter-top-centerほど良くはありません、私はこれを evil-mode で省略します)
- スクリーンのスクロール:
-
スクリーンの再描画:
C-l(私の evil-mode では動作しません、recenter-top-centerがあります) -
スクリーン内の移動
H、M、L: スクリーンの上部 / 中央 / 下部に2H、2L: 上部 / 下部から 2 行目
-
行による移動
+、<Enter>、-、次の / 前の行の最初の文字に移動。- 現在の行での移動:
20|、20 列目に移動、^、最初の非空文字に移動。
-
テキストブロックによる移動
e、E、単語の末尾、(句読点を無視)(、)、現在の / 次の文の先頭{、}、現在の / 次の段落の先頭[[、]]、現在の / 次のセクションの先頭
-
検索による移動
/pattern、?pattern、前方 / 後方に検索n、次の一致N、次の一致、反対の位置:set nowrapscan、ループ検索を行わないd/pattern
-
現在の行の検索
fx、Fx、前の / 次の 'x' に移動tx、Tx、文字 'x' の前に移動、前の / 次の;、,、同じ方向で繰り返す、反対方向7fx、7 番目の一致に移動dfx、例dfi、ここから最初の 'i' の出現まで削除し、次にd;、2 番目の 'i' の出現まで削除
-
行番号による移動
20G、20 行目に移動``, 戻る(古い位置)''、行の先頭に戻る
スクリーンエディタを使うとページをスクロールでき、 move1 move2 move4 move5 move6 move7 カーソルを移動し、行を削除し、挿入 文字を追加し、さらに編集結果を見ながら 作成しながら見ることができます。
第 4 章、基本を超えて#
-
より多くのコマンドの組み合わせ
+------------+------------+-----------+------------------------------+ |変更 |削除 |コピー |カーソルから... | +------------+------------+-----------+------------------------------+ |cH |dH |yH |スクリーンの上部 | +------------+------------+-----------+------------------------------+ |cL |dL |yL |スクリーンの下部 | +------------+------------+-----------+------------------------------+ |c+ |d+ |y+ |次の行 | +------------+------------+-----------+------------------------------+ |c5| |d5| |y5| |現在の行の5列目 | +------------+------------+-----------+------------------------------+ |2c) |2d) |2y) |次の文 | +------------+------------+-----------+------------------------------+ |c{ |d{ |y{ |前の段落 | +------------+------------+-----------+------------------------------+ |c/pattern |d/pattern |y/pattern |パターン | +------------+------------+-----------+------------------------------+ |cn |dn |yn |次のパターン | +------------+------------+-----------+------------------------------+ |cG |dG |yG |ファイルの末尾 | +------------+------------+-----------+------------------------------+ |c13G |d13G |y13G |行番号13 | +------------+------------+-----------+------------------------------+ -
vi を起動する際のオプション
vi +3 filename、3 行目でファイルを開くvi + filename、最終行でファイルを開くvi +/pattern filename、パターンの最初の出現でファイルを開くvi +R filename、読み取り専用モードでファイルを読み込むvi -r filename、ex -r filename、バッファを回復
-
名前付きバッファへのヤンク
"dyy"、バッファ "d" にヤンク"ayw"、バッファ "a" にヤンク"ap、"dp`、バッファ"a"/"d" をペースト
-
自分の位置をマーク
mx、現在の位置を x にマーク'x、x `、マーク x に移動。(最初の文字、または正確な位置)''、``, 最後の位置に移動
第 5 章、ex エディタの紹介#
__ _ _ _ _
/ _| ___ _ __ | | __ _| |_ ___ _ __ _ __ ___ __ _ __| (_)_ __ __ _
| |_ / _ \| '__| | |/ _` | __/ _ \ '__| | '__/ _ \/ _` |/ _` | | '_ \ / _` |
| _| (_) | | | | (_| | || __/ | | | | __/ (_| | (_| | | | | | (_| |
|_| \___/|_| |_|\__,_|\__\___|_| |_| \___|\__,_|\__,_|_|_| |_|\__, |
|___/
第 6 章、グローバル置換#
-
置換
:s/old/new、最初の old の出現を置換:s/old/new/g、多くの出現:50,100s/old/new/g、:50,100s/old/new50〜100 行に適用:1,$s/old/new、ファイル全体に適用
-
c、確認
yははいnはいいえEnter、終了
-
コンテンツに応じた置換
:%s/old/new/g、確認なし、ファイル全体:g/pattern/s/old/new/g、:1,200g/pattern/s/old/new/g:g/pattern/s/old/new/g、:g/pattern/s//new/gと同じ
-
パターンマッチングルール
., 単一文字、改行を除く*、前の文字の 0 回以上の出現に一致- 例
a*はa、aa、aaaなどに一致 - 例
.*は任意の文字の組み合わせに一致
- 例
^、$、正規表現の最初 / 最後の文字である場合、行の先頭 / 末尾として扱われ、そうでない場合はそのまま扱われます。- 例
^Lineは "Line" で始まる任意の行に一致 - 例
something^*は "something"、"something^"、"something^^" などに一致
- 例
[]、例[aoei]はa、o、e、iに一致;[a-z]、;:[a-z0-9]は期待通りに動作します。:%s/\(That\) or \(this\)/\2 or \1/~、最後の検索履歴に一致。例えば、/theで "the" を検索した後、/~nで "then" を検索できます。\、例\.は "."\<m、\>tion、'm' で始まり、"tion" で終わる単語に一致
-
POSIX ブラケット式
[:alnum:]英数字[:alpha:]アルファベット文字[:blank:]スペースとタブ文字[:cntrl:]制御文字[:digit:]数字[:graph:]印刷可能で可視(空白以外の)文字[:lower:]小文字[:print:]印刷可能な文字(空白を含む)[:punct:]句読点[:space:]空白文字[:upper:]大文字[:xdigit:]16 進数の数字
-
s/old/NEW/gの新しいパターン\n、n は 1..9、(THIS) に一致&、一致した部分~、s/thier/their/、次にs/her/~/はs/her/theirのようになります。\u、\l、大文字 / 小文字の文字。:s/\(That\) or \(this\)/\u\2 or \l\1/\U、\L、\e、\E、大文字の領域、または全体の一致:set ic、大文字と小文字を無視
-
さらに置換のトリック
:s//~/、最後の置換を繰り返す:%&g、最後の置換をすべての場所で繰り返す:%s;/user1/tim;/home/tim;g
-
演習
/four、<Enter>、cwfive、n(検索を繰り返す)、n(1 つの一致をスキップ)、.(最後のcwfiveを適用)
-
例
- 例 - 1
<p>something</p> <p>somethingelse</p> <a>something</a> ===> `:%300,400g/<p>/s/something/somethingelse/g` ===> <a>something</a> <a>something</a> <a>something</a> <p>something</p> <p>somethingelse</p>- 例 - 2
one (one) two (two) three ===> `:348,352s/.*/(&)/` ===> (three) four (four) five (five)- 例 - 3
That or this ===> `:%s/\(That\) or \(this\)/\2 or \1/` ===> this or That
__ _ _ _ _
/ _| ___ _ __ | | __ _| |_ ___ _ __ _ __ ___ __ _ __| (_)_ __ __ _
| |_ / _ \| '__| | |/ _` | __/ _ \ '__| | '__/ _ \/ _` |/ _` | | '_ \ / _` |
| _| (_) | | | | (_| | || __/ | | | | __/ (_| | (_| | | | | | (_| |
|_| \___/|_| |_|\__,_|\__\___|_| |_| \___|\__,_|\__,_|_|_| |_|\__, |
|___/
第 7 章、高度な編集#
-
vi のカスタマイズ
- コマンド
:set option、または:set nooption
- .exrc ファイル
- コマンド
-
Unix コマンドの実行
:!cmd:r !date、ファイルに出力、Thu May 1 12:59:55 CST 2014:. !date、:rと同じですが、現在の行を上書き:r Learning-Vim.md、これは.... 良いです。
-
コマンドを通じてテキストをフィルタリング
:%!sort、試すと死にます...!)cmd、これらの文を cmd に渡す!!、現在の行!2!、2!!、2 行
-
コマンドの保存
- 単語の略語
:ab abbr phrase:unab abbr
- 単語の略語
第 8 章、vi クローンの紹介#
トリック#
diw、di"、di{}:!xxd、16 進エディタ
:!xxd -rde、その後.を必要に応じてddp、現在の行と次の行を入れ替えるbye、yiw'.、最後に編集した行`., 最後に編集した文字:changes、変更のリスト- /rgba/y A
10.gv、最後の視覚選択を再選択 g~~、gUU、guu>>、<<、インデント#、*、カーソルの下の単語を検索