วิธีการ grep ในเอาต์พุตคำสั่ง ex


11

หนึ่งค้นหารูปแบบในเอาต์พุตคำสั่ง ex ได้อย่างไร ตัวอย่างเช่นวิธีค้นหารูปแบบชื่อไฟล์ในผลลัพธ์ของ:scriptnamesคำสั่ง ในความช่วยเหลือสำหรับทุกรสชาติgrepและvimgrepมีเพียง{file}เป็นสถานที่ที่จะทำการค้นหา

คำตอบ:


6

คุณสามารถทำได้:

:redir => scriptn | sil exe 'scriptnames' | redir end | echo(system('grep pattern',scriptn))

มันทำอะไร:

:redir => scriptn                      "redirect following output to variable scriptn
:sil exe 'scriptnames'                 "silently execute scriptnames
:redir end                             "end the redirection
:echo(system('grep pattern',scriptn))  "echo the call of grep witht that input with the pattern `pattern`

12

:filterคำสั่งเป็นวิธีการที่ง่ายหนึ่งบรรทัดนี้

:filter /indent/ scriptnames

จะแสดงเฉพาะบรรทัดที่ตรงกับรูปแบบindentจากผลลัพธ์ของ:scriptnamesคำสั่ง


ฉันเห็น:redirการแก้ปัญหาที่มุ่งเน้นคำถามเหล่านี้บ่อยๆซึ่งใช้ได้ดีและมีพลังและตัวเลือกมากมาย แต่ฉันรู้สึกว่ามันเกินความจริงเล็กน้อยเมื่อไม่ได้มากไปกว่านี้คุณต้องตรวจสอบอย่างรวดเร็วว่ามีบางอย่างอยู่หรือไม่ :filterสะดวกในการใช้งานในขณะนี้และง่ายตาย


2
นี่คือสะอาดและรัดกุมมากขึ้น
jdhao

อันที่จริงควรเป็นคำตอบที่ยอมรับได้ (เรียนรู้มากจากคำตอบของ edi9999 แต่จึง upvote.)
27719

4

ก่อนอื่นคุณต้องดึงเอาท์พุทscriptnamesและใส่ลงในบัฟเฟอร์

คุณสามารถใช้:redirสำหรับ:

:redir @a       " redirect output of following ex commands to register a
:scriptnames    " press G to get to the end of the output if it's too long
:redir END      " end the redirection
:vnew           " new buffer in vertical window
:put a          " put content of register
/pattern        " search for 'pattern'

ที่กล่าวว่า:scriptnameผลลัพธ์ที่ยาวเกินไปที่จะสแกนด้วยตาของคุณเองอาจเป็นอาการของปัญหาที่ลึกกว่า


เห็นด้วยกับประโยคสุดท้ายของคุณ หากผลลัพธ์นั้นยาวควรทำการกรองโดยตรงจากบรรทัดคำสั่งไม่ใช่จากภายใน ex
Wildcard

ขออภัยไม่เห็นความหมายของรายการที่ยาวเกินไป ตัวอย่างเช่น syntastic มีอยู่ในรายการ 10 ไฟล์ nerdtree อีก 13 ไฟล์และอื่น ๆ
Al Berger

2
หากการส่งออกของคุณ:scriptnamesมีความยาวมากกว่ารัฐธรรมนูญคุณอาจพิจารณาติดตั้งทิมสมเด็จพระสันตะปาปาscriptease มันมีฟังก์ชั่น:Scriptnamesที่ทำให้ขยะทั้งหมดนั้นอยู่ในรายการโปรแกรมแก้ไขด่วน คุณสามารถค้นหาเนื้อหาของหัวใจบันทึกลงในไฟล์หรือไปที่สคริปต์ที่เกี่ยวข้อง
Sato Katsura

@AlBerger รายการที่ยาวเกินไปหมายถึงปลั๊กอินและ / หรือปลั๊กอินที่มีขนาดใหญ่เกินไปหรือเขียนไม่ดี 13 ไฟล์สำหรับปลั๊กอินเดียวนั้นมากเกินไป
romainl

คุณกำลังบอกว่าNERDTreeควรใส่ฟังก์ชั่นทั้งหมดในไฟล์เดียวเพื่อให้การส่งออกของ:scriptnamesสั้น? มันจะทำให้เป็นปลั๊กอินที่ดีกว่าไหม
Sato Katsura
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.