で異なる状況下で、\ rをの異なった行動はのは、異なる状況下で\n
の効果を見る手放す、私は文字「S」とのラインを持っていると言う: nと、Vimの
:s/s/a\nb
a^@b
:s/s/a\\nb
a\nb
:s/s/a\\\nb
a\^@b
:s/s/a\\\\nb
a\\nb
:echo "a\nb"
a
b
:echo "a\\nb"
a\nb
:echo "a\\\nb"
a\
b
:echo "a\\\\nb"
a\\nb
なぜ\n
はありません異なって振る舞う?その後のはsubstitute()
:echo substitute(" ", " ", "a\nb", "")
a
b
:echo substitute(" ", " ", "a\\nb", "")
a
b
:echo substitute(" ", " ", "a\\\nb", "")
a
b
:echo substitute(" ", " ", "a\\\\nb", "")
a\nb
この時間を利用して条件を見てみましょう、\n
はまだ「改行」として解釈されますが、どのようにバックスラッシュを説明するために?
次の部分、私はまだだけではなく、\n
の文字「S」、\r
を研究しようとしているとのラインを持っていると言う:
:s/s/a\rb
a
b
:s/s/a\\rb
a\rb
:s/s/a\\\rb
a\
b
:s/s/a\\\\rb
a\\rb
\r
の効果が:echo "a\nb"
で\n
のようなもので、バックスラッシュのルールは同じです。
:echo "a\rb"
b
:echo "a\\rb"
a\rb
:echo "a\\\rb"
b\ "This is the most strange case!!!
:echo "a\\\\rb"
a\\rb
この場合、\r
は何をしますか?そして3番目のサブケースはさらに見知らぬ人です。
:echo substitute(" ", " ", "a\rb", "")
b
:echo substitute(" ", " ", "a\\rb", "")
b
:echo substitute(" ", " ", "a\\\rb", "")
b
:echo substitute(" ", " ", "a\\\\rb", "")
a\rb
まだ、バックスラッシュの数がどのように変化するのかわかりません。
私の質問は以下のとおりです。
- なぜ
\n
または\r
は、:substitute
下異なり直接echo
とsubstitute()
に動作しますか? substitute()
を使用した場合のバックスラッシュの効果の違いを説明するにはどうすればよいですか?- Vimで
\n
と\r
の違いは何ですか?
補足1:
I :let s = "a\\\nb"
、その後<C-r>=s
はバッファにそれを見るためにならば、私はこれを説明するためにどのように
a\
b
を参照してください? :echo
とsubstitute()
両方について
恐ろしい答え!私はほとんどそれを得る。 '' a \\ rb ''は解釈の1つ後に' a \ rb'と解釈されるのはなぜですか?:echo substitute( ""、 ""、 "a \\\ rb"、 "")この解釈は 'substitute()'のためですか?一つの解釈の後に 'a \^Mb'でなければならないのでしょうか? – fujianjin6471
@ fujianjin6471です。しかし '\^M 'の意味はほとんど定義されていません。 ':h/\\ '以下の特殊文字を意味するバックスラッシュは、将来の拡張のために予約されています。現在 '\^M'は改行として解釈されます。 '^ M 'をバッファに入れたら(' ')、'/\^M'を検索すると分かります。そして '^ M'がマッチすることを見てください。 (この動作には依存しないでください) –
FDinoff
ありがとうございますが、私が ':\ s \" a \\\ nb "'とそれに ' = s'をバッファに入れて見れば、何か本当に説明できないものが見えます。私はその質問にそれを示します。 –
fujianjin6471