ウェブサイト検索

すべての Linux 管理者向けの 8 つの興味深い「Vi/Vim」エディターのヒントとコツ - パート 2


このシリーズの前の記事では、vi/m のスキルセットに追加するための 7 つのヒントとテクニックを確認しました。前述の理由に加えて、Linux でテキスト エディタを効果的に使用する方法を学ぶことは、システム管理者またはエンジニアにとって必須の能力であり、主要な Linux 認定プログラム (LFCS、LFCE、RHCSA、RHCE など) に合格するために必要な能力です。 。

ということで、始めましょう。

ヒント #8: 水平または垂直ウィンドウを作成する

このヒントは、読者の 1 人である Yoander によってパート 1 で共有されました。複数の水平または垂直分割を使用して vi/m を起動し、同じメイン ウィンドウ内で別々のファイルを編集できます。

vi/m を 2 つの水平ウィンドウで起動します。test1 が上部、test2 が下部にあります。

vim -o test1 test2 

vi/m を 2 つの垂直ウィンドウで起動します。左側に test3、右側に test4 が表示されます。

vim -O test3 test4 

通常の vi/m 移動ルーチン (h: 右、l: 左、j:) を使用して、あるウィンドウから別のウィンドウにカーソルを切り替えることができます。下、k: 上):

  1. Ctrl+W k – 上部
  2. Ctrl+w j – 一番下
  3. Ctrl+w l – 左
  4. Ctrl+w h – 右

ヒント #9: 文字、単語、または行全体を大文字または小文字に変更します。

このヒントは vim でのみ機能することに注意してください。次の例では、X は整数です。

  1. 一連の文字を大文字に変更するには、最初の文字にカーソルを置き、ex モードで「gUX」と入力し、最後にキーボードの右矢印を押します。
  2. X 個の単語を変更するには、単語の先頭にカーソルを置き、ex モードで gUXw と入力します。
  3. 行全体を大文字に変更するには、行の任意の場所にカーソルを置き、ex モードで gUU と入力します。

たとえば、小文字行全体を大文字に変換するには、行の任意の場所にカーソルを置き、「gUU」と入力する必要があります。

たとえば、2 つの大文字の単語を小文字に変換するには、最初の単語の先頭にカーソルを置き、gu2wと入力する必要があります。

ヒント #10: INSERT モードで文字、単語、または行の先頭を削除する

ex モード (つまり、単語を削除するには dw ) で文字または複数の単語を一度に削除できますが、次のように挿入モードでも削除できます。

  1. Ctrl + h: 現在カーソルが置かれている場所の前の文字を削除します。
  2. Ctrl + w: 現在カーソルが置かれている場所の前の単語を削除します。これが正しく機能するには、削除する必要がある単語の後の空のスペースにカーソルを置く必要があります。
  3. Ctrl + u: カーソルがある場所のすぐ左の文字から始まる現在の行を削除します。

ヒント #11: 既存の行をドキュメントの別の行に移動またはコピーする

確かに、よく知られている dd、yy、および p コマンドを ex モードで使用して、それぞれ行の削除、ヤンク (コピー)、および貼り付けを行うことができますが、これらの操作を実行したい場所にカーソルが置かれている場合にのみ機能します。 。幸いなことに、コピーコマンドと移動コマンドを使用すると、カーソルが現在置かれている場所に関係なく、同じことができます。

次の例では、テリー・ニコール・ タリントンの「永遠」というタイトルの短い詩を使用します。まず、vim に行番号を表示させます (コマンド モードの:set nu – これは追加のヒントと考えてください)。 :3copy5 (これもコマンド モード) を使用して、行 3 を行 5 の下にコピーします。

ここで、最後の変更を元に戻し (Esc + u – もう 1 つのボーナス ヒント!)、:1move7 と入力して 7 行目を 1 行目に置き換えます。2 行目から 7 行目がどのようにシフトされるかに注目してください。以前の 1 行目は 7 行目になります。

ヒント #12: パターンによる検索の結果の一致をカウントし、ある出現箇所から別の出現箇所に移動します。

このヒントは、置換コマンド (このシリーズのパート 1 のヒント #7) に基づいていますが、置換動作は次のコマンドによってオーバーライドされるため、何も削除されない点が異なります。 n オプション。指定されたパターンの出現回数が計算されます。

スラッシュを省略しないように注意してください。

:%s/pattern//gn 

例えば、

:%s/libero//gn

ex モードでパターンの出現から次の出現に移動するには、n (小文字の N) を押します。前のインスタンスに移動するには、N を押します。

ヒント #13: 指定した行で vi/m を直接開く

デフォルトでは、vi/m を起動すると、カーソルは最初に編集された最後の行に配置されます。プログラムを開いて指定した行にカーソルを直接置きたい場合は、次の方法を使用できます。

vim filename +line_number

たとえば、forever.txt を開き、カーソルを行 6 に置きます。

vim forever.txt +6

この例を少し調整してみましょう。パターンが 3 番目に出現する行でファイルを開きたいとします。

vim filename +$(grep -in pattern filename | sed -n 3p | cut -d: -f1)

上記のコマンドの動作を詳しく見てみましょう。

  1. grep -in pattern filename – ファイル名からパターンが出現するすべての行を、各出力行の先頭に行番号とともに表示します。
  2. sed -n 3p – 前のパイプラインの出力から 3 行目を表示します。

ついに、

  1. cut -d: -f1 は、フィールド区切り文字であるコロン (:) を使用して、前のパイプラインの最初のフィールドを返します。
grep -in forever forever.txt
grep -in forever forever.txt | sed -n 3p
grep -in forever forever.txt | sed -n 3p | cut -d: -f1

前のコマンドの結果は vi/m に渡され、指定された行でプログラムが開きます。

ヒント #14: vi/m 環境のカスタマイズ

vi/m を使用して構成ファイルを編集したり、コードを記述したりする場合は、最初にプログラムを開いたときに行番号を表示し、Enter キーを押したときに自動的にインデントが行われるように設定できるようにする必要があります。 > キーを押すと、カーソルが自動的に適切な位置に配置されます。さらに、タブが占める空白の数をカスタマイズすることもできます。

vi/m を起動するたびにこれを行うこともできますが、これらのオプションを ~/.vimrc で設定して自動的に適用されるようにする方が簡単です。

set number
set autoindent
set shiftwidth=4
set softtabstop=4
set expandtab

vi/m 環境をカスタマイズするためのその他のオプションについては、オンラインの vim ドキュメントを参照してください。

ヒント #15: vimtutor を使用して Vim の一般的なヘルプ/オプションを入手する

一般的な vi/m スキルを磨く必要がある場合は、いつでもコマンド ラインからvimtutor を起動すると、完全な vi/m ヘルプが表示され、いつでも参照できます。 Web ブラウザを起動して、vi/m で特定のタスクを実行する方法を検索する必要はありません。

vimtutor

vi/m で通常のファイルをナビゲートしているかのように、vimtutor のコンテンツをナビゲートまたは検索できることに注意してください。

まとめ

この 2 回の記事シリーズでは、コマンド ライン ツールを使用してテキストを編集する際に、より効率的に行うのに役立ついくつかの vi/m のヒントとテクニックを共有しました。他にもあると思います。以下のフォームを使用して、コミュニティの他のメンバーと自由に共有してください。いつものように、質問やコメントも歓迎です。