ขณะแก้ไขไฟล์ไวยากรณ์ฉันพบสิ่งที่ชอบ:
\s*\%(\%(:\@<!\/\/.*\)\=\|\%(\/\*.*\*\/\s*\)*\)$
ฉันคุ้นเคยกับคนอื่นมากกว่า\%
และที่\@
นั่น ฉันไม่สามารถทำ Google ด้วยซ้ำเพราะไม่รู้ว่าชื่ออะไร ดังนั้นมันคืออะไรและมันทำอะไร?
ขณะแก้ไขไฟล์ไวยากรณ์ฉันพบสิ่งที่ชอบ:
\s*\%(\%(:\@<!\/\/.*\)\=\|\%(\/\*.*\*\/\s*\)*\)$
ฉันคุ้นเคยกับคนอื่นมากกว่า\%
และที่\@
นั่น ฉันไม่สามารถทำ Google ด้วยซ้ำเพราะไม่รู้ว่าชื่ออะไร ดังนั้นมันคืออะไรและมันทำอะไร?
คำตอบ:
ก่อนที่จะ googling ลองใช้ doc:
จาก :h \%
\%(\) A pattern enclosed by escaped parentheses.
Just like \(\), but without counting it as a sub-expression. This
allows using more groups and it's a little bit faster.
{not in Vi}
และ :h \@<!
\@<! Matches with zero width if the preceding atom does NOT match just
before what follows. Thus this matches if there is no position in the
current or previous line where the atom matches such that it ends just
before what follows.
Like "(?<!pattern)" in Perl, but Vim allows non-fixed-width patterns.
The match with the preceding atom is made to end just before the match
with what follows, thus an atom that ends in ".*" will work.
Warning: This can be slow (because many positions need to be checked
for a match). Use a limit if you can, see below.
Example matches ~
\(foo\)\@<!bar any "bar" that's not in "foobar"
\(\/\/.*\)\@<!in "in" which is not after "//"
pattern.txt
ไฟล์มีหัวข้อเกี่ยวกับรายการเหล่านี้ทำให้พวกเขามีแท็กความช่วยเหลือที่เกี่ยวข้อง ( /\%(\)
หรือ/\%(
หรือE53
สำหรับคนแรกและ/\@<!
สำหรับคนที่สอง) :h
และแท็กเหล่านี้สามารถนำมาใช้เป็นข้อโต้แย้งของ ตอนนี้เกี่ยวกับชื่อของพวกเขาฉันจะบอกว่าพวกเขาเรียกว่าอะตอมเหมือน^
หรือ.
แต่ฉันไม่แน่ใจ 100%
:helpgrep
มีไว้สำหรับ :)
:help
สามารถยอมรับรูปแบบเป็นอาร์กิวเมนต์ได้ นั่นเป็นข้อมูลที่มีค่ามาก อย่างไรก็ตามมันไม่มีชื่อใช่มั้ย