vim
エディタでコマンドモードを使用して、改行文字(\n
)を2つの改行文字()に置き換えたいと思います。\n\n
vim
入力ファイルの内容:
This is my first line.
This is second line.
- 私が試したコマンド:
ただし、以下のように文字列を不要な文字に置き換えます。:%s/\n/\n\n/g
This is my first line.^@^@This is second line.^@^@
- その後、次のコマンドを試しました。
うまくいきます。:%s/\n/\r\r/g
2番目のコマンドが正しく機能する理由を説明できますか?
答え1
奇妙なこと\n
に、vimでは代替改行を意味するのではなく、空であることを意味します。 ASCII nulは^@
(Ctrl+ @)です。
歴史的に、viは^M
(Ctrl+ M)を改行文字の行終端に置き換えました。\r
vimと同じようにC言語などの拡張機能がvimに追加されましたが、^M
開発者は\n
Meanをnullに設定することにしました。変えるテキスト。これは用途に合わない。探す、改行文字を検索します。
追加資料:
- 検索と置換(ビームウィキ)
- vimは文字を次に置き換えます。
\n
答え2
1つの改行文字を2つの改行文字に置き換えるには、次のようにします。
:%s/\n/\r\r/g
\n
- 検索時に改行、交換時に空
\r
- 交換中の改行文字
答えは質問にあります。作者はタイトルで「どうやって」を尋ね、内容から「なぜ」を尋ねます。人々は実際に質問を受け取るとは思わないときに「どのように」への答えを見つけるためにこのページを訪問します。それを調べるのに時間がかかりました。
答え3
この試み:
%s/$/^V^M/
どこで+^V
と+です。CtrlV^M
CtrlM
- 入力すると文字
^V
が印刷され、その上に^
文字が印刷Backspaceされ、入力すると次^M
のように表示されます。^M
- +は標準ttyCtrlですV文字通り次文字 - コマンドを実行して
stty -a
ttyの特殊文字を表示します。
答え4
Neovim(nvim
)とバージョンでVim
テストする
NVIM v0.3.0
VIM - Vi IMproved 8.1
改行を削除します。
cell
allele
rs2981578
fgfr2
ここで\n
改行文字を一致させます(入れるただし、改行文字を使用してください\r
):
:'<,'>s/\n/|/g
cell|allele|rs2981578|fgfr2
改行文字を追加:
いいえ:
cell|allele|rs2981578|fgfr2
:'<,'>s/\n/|/g
cell^@allele^@rs2981578^@fgfr2
^@
LFの発音区別記号(ラインフィード、参照)。
http://vimhelp.appspot.com/digraph.txt.html#digraphs-default)
例:
cell|allele|rs2981578|fgfr2
:'<,'>s/|/\r/g
cell
allele
rs2981578
fgfr2
OPの問題(\n
1つを2つに置き換える方法\n\n
)を解決するには、もう1つを追加してください\r
。
cell
allele
rs2981578
fgfr2
:'<,'>s/\n/\r\r/g
cell
allele
rs2981578
fgfr2
...つまり、元の改行文字(\n
)を一致させ、\r\r
それを2つの改行/キャリッジリターン文字()に置き換えます。