2

N以下は、 viの最初の文字を削除するコマンドです。

:%s/^.\{N}//g

^.\{N}しかし、私は;の意味を理解していません。誰でも各文字の意味を文字ごとに説明できますか?
このコマンドを拡張して、行から中間の文字を削除するにはどうすればよいですか?

例:指定された行範囲から4番目から50番目の文字を削除する

4

3 に答える 3

4

\%c特定の列をまたはと一致させることができます\%v

4番目から50番目の列を削除します。

 :%s/\%4c.\{-}\(\ze\%50c\|$\)//

IFFのみを削除するには、50番目の列があります。

 :%s/\%4c.\{-}\ze\%50c//

仮想列を使用するには(たとえば、タブストップを使用する場合に便利です):

 :%s/\%4v.\{-}\ze\%50v//

おー、

  • .\{-}0個以上の文字の貪欲でない一致です。
  • \ze一致終了ディレクティブです。これにより、列50で一致が停止します。
于 2012-06-22T09:53:08.433 に答える
1

これが正規表現部分の説明です

^は、最初のアンカーです。

.任意の文字に一致しました。

N前のトークンが一致する文字数を示します

{}カウントをグループ化するために使用されます。たとえば、次のように使用できます{1, 9}

つまりFrom the beginning of the line, match N characters、残りはVIMのものです。

于 2012-06-22T09:18:18.940 に答える
1

^行頭アンカーです。.はユニバーサルマッチで{N}、前のマッチをN回繰り返します。

4番目から50番目の文字を削除するには、を使用します:%s/^\(.\{4}\).\{46}/\1/g

ただし、長方形選択モードを使用する方がおそらく簡単です。通常モードから開始位置に移動してからヒットCtrl+Vすると、カーソルを移動して長方形選択を作成できます。

于 2012-06-22T09:44:54.877 に答える