Dalam vim, untuk menggantikan aksara baris baharu anda perlu mencari n tetapi untuk menggantikannya dengan aksara baris baharu ia ialah r
Maksudnya
:s/\n/\r/
Tiada apa-apa yang berlaku. Secara teorinya, saya boleh menggantikan semua n dengan r dan kemudian mencari semula
/\r
Masih tiada, hanya
/\n
Ia mempunyai nilai, sila cari prinsipnya~~~
Saya menulis nota sebelum ini, tetapi ia tidak didedahkan kepada umum. Saya menyiarkannya di sini untuk rujukan.
(Teks asal adalah dalam format markdown, yang tidak disokong sepenuhnya oleh SF, tetapi ia tidak menjejaskan bacaan)
Teks notaMasalah talian putus dalam Vim
===============
Jika anda ingin menggunakan
s/n/n/g
dalam Vim, semua pemisah baris dalam fail akan digantikan dengan aksara^@
mengikut pemahaman bersama, s /n/n/g seharusnya tidak mempunyai sebarang kesan, tetapi dalam Vim,n
dikendalikan secara berbeza sedikit.s/n/n/g
会导致文件的换行全部被替换成^@
字符,按照通常的理解,s/n/n/g
不应该有任何的效果,但在 Vim 中,n
的处理略有不同。:help NL-used-for-Nul
从这段说明可以了解到在 Vim 中,空字符
<Nul>
(ASCII 0)在内存中是作为<NL>
(newline) 进行处理的。'n' 在搜索表达式中是在匹配一个字符串,所以字面意义的 'new line' 字符串会被匹配到,而不是
:membantu NL-digunakan-untuk-Nul🎜 🎜Daripada penerangan ini, anda boleh memahami bahawa dalam Vim, aksara null<Nul>
字符。在替换表达式中 'n' 会被解释为<NL>
,于是在内部,<Nul>
会被输入,所以在替换的表达式中 'n' 不再表示 'new line' 或者 'end-of-line'。同样,在搜索表达式中,输入 "CTRL-@" 或者 "CTRL-V 000" 表示<Nul>
字符,但是在内部,他们还是都被替换为<NL>
进行处理的,这也就是为什么直接键入 CTRL-V CTRL-J(输入的是<NL>
<Nul>
(ASCII 0) diproses dalam ingatan sebagai<NL>
(baris baharu) daripada . 🎜 🎜'n' memadankan rentetan dalam ungkapan carian, jadi rentetan 'baris baharu' literal akan dipadankan, bukan aksara<Nul>
. 'n' dalam ungkapan gantian akan ditafsirkan sebagai<NL>
, jadi secara dalaman,<Nul>
akan dimasukkan, jadi dalam ungkapan gantian 'n' no lebih panjang bermaksud 'baris baharu' atau 'talian hujung'. Begitu juga, dalam ungkapan carian, memasukkan "CTRL-@" atau "CTRL-V 000" mewakili aksara<Nul>
, tetapi secara dalaman, ia masih digantikan dengan<
diproses, itulah sebabnya menaip CTRL-V CTRL-J secara langsung (input ialah aksara<NL>
itu sendiri) mempunyai kesan yang sama. 🎜Saya rasa sebab kekeliruan mungkin kerana Vi tidak menyokong aksara
<Nul>
dan Vim telah dibangunkan daripada Vi Pengarang mungkin telah menggunakan< secara langsung untuk kemudahan ; NL>
digunakan untuk mewakili<Nul>
, iaitu maksud literal 'NL-used-for-Nul'. Pada masa yang sama, fungsi asal<NL>
digantikan dengan<CR>
, iaitu makna literal 'CR-used-for-NL' .<Nul>
字符,而 Vim 由 Vi 发展而来,作者可能为了方便,直接使用了<NL>
用来表示<Nul>
,这也就是 'NL-used-for-Nul' 的字面意思。与此同时,<NL>
原本的作用则使用<CR>
来替代,这也就是 'CR-used-for-NL' 的字面意思。:help CR-used-for-NL
那么,我们如何在替换表达式里表示
:membantu CR-digunakan-untuk-NL<NL>
呢?答案就是<CR>
,可以使用 CRTL-V CRTL-M(输入的是<CR>
字符本身) 或者 'r',Vim 并不会在文件中直接输入<CR>
字符,它会根据当前 ‘fileformat’ 的设置来决定使用<CR>
(Mac),<NL>
(*nix) 还是<CR><NL>
<NL>
dalam ungkapan gantian? Jawapannya ialah<CR>
, anda boleh menggunakan CRTL-V CRTL-M (input ialah aksara<CR>
itu sendiri) atau 'r', Vim akan bukan Masukkan aksara<CR>
terus ke dalam fail, dan ia akan memutuskan untuk menggunakan<CR>
(Mac),<NL> mengikut arus tetapan 'format fail' ;
(*nix) atau<CR><NL>
(dos).