سؤال
من السؤال كيفية استبدال حرف سطر جديد في همة?.لديك لاستخدام عند استبدال نص السطر ، مثل هذا
:%s/%/\r/g
ولكن عند استبدال نهاية خطوط و أسطر على حرف ، يمكنك أن تفعل ذلك مثل:
:%s/\n/%/g
ما القسم من الدليل وثائق هذه السلوكيات ، ما هو المنطق وراء عليهم ؟
المحلول
\r
مباريات <CR>
\n
مباريات نهاية خط عند مطابقة في سلسلة بدلا من العازلة النص الحرفي السطر الحرف هو مطابقة.
نصائح أخرى
من http://vim.wikia.com/wiki/Search_and_replace :
عند البحث
...
\n
هو السطر ،\r
هوCR
(إرجاع =Ctrl-M
=^M
)عند استبدال
...
\r
هو السطر ،\n
هو null byte (0x00
).
هناك جانب آخر لهذا هو أن \0
, الذي عادة NULL, في
s//\0/
يعني "كلها مطابقة نمط".(والتي بالمناسبة هي زائدة عن الحاجة مع أطول مما كان ، &
).
- لذلك لا يمكنك استخدام
\0
يعنيNULL
, لذا تستخدم\n
- لذلك لا يمكنك استخدام
\n
يعني\n
, لذا تستخدم\r
. - لذلك لا يمكنك استخدام
\r
يعني\r
, ولكن أنا لا أعرف من الذي يريد أن أضيف أن شار على الغرض.
—☈
:help NL-used-for-Nul
التفاصيل التقنية:
<Nul>
الشخصيات في ملف يتم تخزين<NL>
في الذاكرة.في العرض وتظهر على أنها "^@
".تتم الترجمة عند قراءة وكتابة ملفات.لتتناسب مع<Nul>
مع نمط البحث يمكنك إدخال فقط CTRL-@ أو "CTRL-V 000".وربما هذا هو فقط ما كنت تتوقع.داخليا الحرف هو استبدال<NL>
في البحث عن نمط.ما هو غير عادي هو أن كتابة CTRL-V CTRL-J أيضا إدراج<NL>
, وهكذا أيضا بالبحث عن<Nul>
في الملف.{السادس لا يمكن التعامل مع<Nul>
الشخصيات في ملف في كل}
أولا وقبل كل شيء ، فتح :h :s
إلى مراجعة قسم "4.2 بديل" من الوثائق على "التغيير".هنا ما يقبل الأوامر:
:[range]s[ubstitute]/{pattern}/{string}/[flags] [count]
لاحظ الوصف عن pattern
و string
عن
{pattern}
انظر|pattern|
.
{string}
يمكن أن تكون سلسلة حرفية ، أو شيء
الخاصة ؛ انظر|sub-replace-special|
.
حتى الآن أنت تعرف أن نمط البحث و استبدال أنماط تتبع قواعد مختلفة.إذا كنت تتبع رابط |pattern|
, ، فإنه يأخذك إلى القسم الذي يفسر كل regexp الأنماط المستخدمة في همة.
وفي الوقت نفسه ، |sub-replace-special|
يأخذك إلى القسم الفرعي من "4.2 بديل" ، الذي يحتوي على أنماط الاستبدال ، \r
من أجل كسر خط/تقسيم.
(اختصار إلى هذا الجزء من الدليل :h :s%
)