vim でテキスト置換を行うには 1 行だけをターゲットにします

vim でテキスト置換を行うには 1 行だけをターゲットにします

vi(m) で、ファイル内の特定の行を文字列置換の対象にする方法はありますか?

Web サーバーから SSL SHA フィンガープリントを Mercurial .hgrc に頻繁に追加する必要があります。南京錠をダブルクリックして証明書の詳細を確認することで、Chrome から必要な署名を簡単に取得できますが、Mercurial が要求するコロン区切りではなく、スペース区切りの署名が取得されます。

06 32 1C C5 8A 49 77 85 C5 89 6F 67 75 96 F0 43 77 96 EB 90

Googleコード

以下の方法がありますか:

  1. 指紋をクリップボードにコピーします
  2. vi(m) で .hgrc を編集する
  3. 挿入モードにして、その指紋を貼り付けます
  4. そのラインだけをターゲットにして

    :s/ /:/g

  5. ファイルを保存する

今は、フィンガープリントを新しいファイルに貼り付け、置換を行い、それを.hgrcに取り込むことができます。:r ファイル名ただし、これは省略してもかまわない余分な手順です。

答え1

理解した:

変更したい行にカーソルを移動し、次の操作を行います。

.s/ /:/g

置換コマンドの前の '.' は、現在の行のみを変更することを vi(m) に伝えます。

参照:http://www.kingcomputerservices.com/unix_101/search_and_replace_with_vi_part_1.htm

答え2

N行目の後に挿入する場合:

:N put =substitute(@+, ' ', '', 'g')

ファイルの終わり: N=$、ファイルの始まり: N=0。@+ はクリップボード レジスタです (GUI が実行されている場合)。

答え3

単純に:s/ /:/gそれで十分です。

デフォルトでは、この:substituteコマンドは現在の行でのみ機能します。

グローバル/g修飾子は、ファイル全体ではなく、指定された範囲内のすべての一致を置き換えることを意味します。

答え4

これをやるつもりですか?

echo "06 32 1C C5 8A 49 77 85 C5 89 6F 67 75 96 F0 43 77 96 EB 90" >> <filename>

関連情報