คำถามติดแท็ก search

ค้นหาข้อความด้วย / หรือค้นหา () สำหรับการดำเนินการค้นหา / แทนที่ให้ใช้แท็ก [ทดแทน] แทน

4
ฉันจะค้นหาสตริงระหว่างหมายเลขบรรทัดที่แน่นอนได้อย่างไร
นี่เป็นปัญหาที่ฉันเพิ่งพบเมื่อไม่นานมานี้ ฉันมีไฟล์ที่มีข้อความหลายร้อยบรรทัด ฉันจะค้นหาสตริงระหว่างหมายเลขบรรทัดสองหมายเลขได้อย่างไร เช่นฉันต้องการค้นหาระหว่างหมายเลขบรรทัด 100 และ 325

2
มีการค้นหาและแทนที่ประวัติในกลุ่ม?
เราสามารถดึงข้อมูลการค้นหาและแทนที่ประวัติบน IDE และโปรแกรมแก้ไขข้อความ ในทำนองเดียวกันจะมีประวัติการค้นหาหรือวิธีการดึงการแสดงออกค้นหาก่อนหน้านี้ในกลุ่ม?
14 search 

1
เป็นไปได้ที่จะได้รับสายที่ตรงกันหลังจากโทร: ค้นหา ()
ในฟังก์ชั่น vimscript ฉันต้องกำหนดสตริงที่จับคู่ให้กับตัวแปรl:matchedหลังจากการโทรsearch()และฉันสงสัยว่ามีวิธีที่สั้นกว่าสิ่งที่ฉันกำลังทำอยู่: let l:pattern = '\v^Foo: \zs.*' let l:line = search(l:pattern) let l:line_text = getline(l:line) let l:matched = matchstr(l:line, l:pattern) เป็นการดีที่ฉันต้องการบางสิ่งบางอย่าง let l:matched = search_text(l:pattern) withouth getline()หันไป มีฟังก์ชั่นที่เป็นกลุ่มที่ฉันดูเหมือนไม่สามารถหาได้หรือไม่?
14 vimscript  search 

5
ค้นหาด่วน จำกัด เฉพาะฟังก์ชัน C ++
ฉันทำงานในโครงการ C ++ ที่ค่อนข้างใหญ่ ด้านที่น่าผิดหวังอีกอย่างหนึ่งขององค์กรก็คือฟังก์ชั่นที่มีขนาดใหญ่มาก ๆ อยู่ในไฟล์ขนาดใหญ่ที่น่าขัน ฉันมักจะต้องการค้นหาอินสแตนซ์ใด ๆ ของตัวแปรส่วนกลางหรือการเรียกฟังก์ชันที่ จำกัด เฉพาะฟังก์ชันปัจจุบัน มีสูตรที่เรียบง่ายพอสมควรในการทำสิ่งนี้ให้สำเร็จหรือไม่? (ฉันมี ctags ติดตั้งและใช้ Tagbar ... ซึ่งอาจเป็นประโยชน์สำหรับสิ่งนี้)

3
ฉันจะใช้ชุดการกดแป้นพิมพ์กับทุกคำที่เกิดขึ้นได้อย่างไร
หากฉันต้องการลบทุกคำนั่นเป็นเรื่องง่ายเพราะฉันจะทำสิ่งนี้: :s%/WORD//g แต่ถ้าฉันต้องการจะทำอะไรxyzกับ "WORD" ทุกครั้ง ตัวอย่างเช่นสมมติว่าฉันต้องการลบทุกบรรทัดที่มี "WORD" ฉันสามารถคิดถึงวิธีที่จะทำสิ่งนี้ได้สองสามอย่าง แต่ไม่มีวิธีใดที่เหมาะ 1) /WORD จากนั้นกดด้วยตนเองddnddnddnddn...จนกระทั่งไม่มีเหตุการณ์เกิดขึ้นอีก แต่นี่จะใช้เวลานานถ้ามีหลายบรรทัดในการทำเช่นนี้ 2) qd/WORD<enter>ddq และจากนั้นคาดเดาว่ามีคำกี่คำที่เกิดขึ้นจากนั้นเช่น: 500@d แต่สิ่งนี้จะทำให้ A) พลาดเส้นหนึ่งหรือ B) ลบเส้นพิเศษออก มีวิธีที่ดีกว่าในการทำเช่นนี้?
13 search  macro 

2
การกลับคำสั่ง 'ไปที่ถัดไป' คืออะไร
ถ้าผมต้องการที่จะไปถัดไปในบรรทัดแล้วฉันพิมพ์, t,ถ้าฉันต้องการที่จะไปก่อนหน้านี้,ฉันสามารถใช้/nป้อนNแต่นี้เป็นซอเล็ก ๆ น้อย ๆ วิธีที่ดีที่สุดในการย้อนกลับtคำสั่งและไปยังก่อนหน้า,คืออะไร
13 search 

2
อะไรคือความแตกต่างระหว่างการทำงาน: nohlsearch และ: set nohlsearch?
ผมสังเกตเห็นว่าเมื่อฉันใช้ว่ามันไม่ได้ทำจริงเป็นสิ่งเดียวกับ:nohlsearch:set nohlsearch โดยเฉพาะอย่างยิ่งการhlsearchตั้งค่าไม่ได้ปิดจริง (ซึ่งเป็นสิ่งที่:set hlsearch) สำเร็จ เพื่อแสดงให้เห็นถึงสิ่งที่ฉันหมายถึง: :set hlsearch :nohlsearch :echo &hlsearch ภาพนี้1( hlsearch ยังคงตั้งค่า! ) :set hlsearch :set nohlsearch :echo &hlsearch พิมพ์นี้0เพราะเราปิด hlsearch โดยใช้วิธีมาตรฐานเพื่อปิดการตั้งค่าในกลุ่ม ดังนั้นฉันจึงสงสัยเพราะจะต้องมีเหตุผลที่แท้จริงสำหรับ:nohlsearchคำสั่ง ex เหตุผลที่ผมสนใจก็คือว่าตอนนี้ผมมีความจำเป็นในการเขียนสคริปต์ที่เป็นกลุ่มของฉันในการทดสอบไม่ว่าจะเป็นไฮไลท์ที่มีการใช้งานการค้นหาและตั้งแต่ผมใช้:nohlsearchแทน "ชุด nohlsearch" ในการเขียนสคริปต์อื่น ๆ ของฉันฉันทดสอบเสมอผลตอบแทน&hlsearch 1ดังนั้นฉันสงสัยว่าฉันกำลังเปลี่ยนอะไรโดยไม่ใช้nohlsearchคำสั่ง ex อีกต่อไป
13 search  highlight 

1
มี incsearch สำหรับคำสั่ง replace หรือไม่?
ฉันชอบincsearchฟังก์ชั่นของ Vim จริงๆ มีวิธีที่จะมีมันหรือสิ่งที่คล้ายกับมันทำงานในขณะที่ฉันทำแทน? ตัวอย่างเช่นหากอยู่ในโหมดปกติฉันพิมพ์: :%s/potato/ ฉันจะได้รับการpotatoเน้นทั้งหมดในไฟล์ของฉันเหมือนที่พวกเขาเน้นโดยincsearchเมื่อฉันเขียน /potato ? สิ่งนี้จะช่วยฉันได้มากเมื่อใช้นิพจน์ทั่วไป สิ่งที่ดีมากที่เป็นไปได้คือเมื่อฉันเขียนสิ่งนี้: :%s/potato/banana/ มันจะแทนที่potatos ด้วยbananas และเน้นพวกมัน - บางทีการเปลี่ยนควรจะเป็นสีอื่น ไม่ควร "ยอมรับ" การเปลี่ยนแปลงจนกว่าฉันจะกด Enter) ตอนนี้ฉันใช้ neovim ในกรณีที่ช่วยได้

1
วิธีค้นหา / grep ด้วย VIM แบบโต้ตอบ?
มีวิธีใดที่จะกำหนดค่า VIM ให้ค้นหาภายในไฟล์ทุกไฟล์สำหรับโครงการทั้งหมดแบบโต้ตอบหรือไม่? โดยการโต้ตอบฉันหมายถึงการปรับปรุงการกดแป้นแต่ละครั้ง บางอย่างเช่น Emacs ปรึกษา-Git-grepโปรดดูที่: ตัวอย่างเช่นการสาธิต
12 search  vimgrep 

1
ไม่สนใจเครื่องหมายกำกับ / เสียงเมื่อค้นหา
มีวิธีในการสั่งให้ Vim ที่ฉันต้องการละเว้นการออกเสียง / การเน้นเสียงเมื่อค้นหาหรือไม่? ตัวอย่างเช่นฉันต้องการค้นหา kočička โดยการเข้าสู่ /kocicka ignorecaseและsmartcaseตัวเลือกที่มีประโยชน์มาก แต่พวกเขาไม่ได้ดูเหมือนจะมีอะไรที่จะทำอย่างไรกับการกำกับ / สำเนียง
12 search 

1
เหตุใด Line Feed จึงถูกแปลงเป็นอักขระ Null ภายในรีจิสเตอร์การค้นหาและเป็น Carriage Return บนบรรทัดคำสั่ง
ถ้าฉันมีข้อความต่อไปนี้: foo bar ฉันเลือกและคัดลอก ตอนนี้ข้อความถูกเก็บไว้ในการลงทะเบียนที่ไม่มีชื่อ"และนี่คือเนื้อหา (ผลลัพธ์ของ:reg "): "" foo^Jbar^J ตามแผนภูมินี้ดูเหมือนว่า^Jเครื่องหมายรูปหมวกสำหรับตัวดึงข้อมูลบรรทัด หากฉันต้องการทำซ้ำทะเบียนที่ไม่มีชื่อในการaลงทะเบียนโดยพิมพ์: :let @a = @" นี่คือเนื้อหา (output of :reg a): "a foo^Jbar^J มันไม่เปลี่ยนแปลง ถ้าตอนนี้ฉันทำซ้ำในทะเบียนการค้นหาโดยพิมพ์:let @/ = @"นี่คือเนื้อหา (ผลลัพธ์ของ:reg /): "/ foo^@bar^@ ตามแผนภูมิก่อนหน้านี้ดูเหมือนว่า^@เป็นเครื่องหมายรูปหมวกสำหรับอักขระ Null เหตุใด Line Feed จึงถูกแปลงเป็นอักขระ Null ภายในรีจิสเตอร์การค้นหาโดยอัตโนมัติ (แต่ไม่ใช่aรีจิสเตอร์) ถ้าฉันแทรกการลงทะเบียนที่ไม่มีชื่อในบรรทัดคำสั่ง (หรือในการค้นหาหลังจาก/) โดยพิมพ์:<C-R>"นี่คือสิ่งที่ถูกแทรก: :foo^Mbar^M อีกครั้งตามแผนภูมิล่าสุด^Mดูเหมือนจะเป็นเครื่องหมายรูปหมวกสำหรับ Carriage Return เหตุใด Line Feed …

3
การทำแผนที่ด้วยการเคลื่อนไหว
ฉันพยายามที่จะเข้าใจว่าฉันจะใช้โอเปอเรเตอร์กับการเคลื่อนไหวที่ตามมาภายในแผนที่ได้อย่างไร ตัวอย่างเช่น: nmap /c c{here we pending for a motion}/<C-r>"<CR> แผนที่ควรทำดังนี้: เปิดใช้งานcโอเปอเรเตอร์และฟังการเคลื่อนไหวครั้งต่อไป เช่นฉันสามารถพิมพ์ที่นี่t,เพื่อเปลี่ยนแปลงทุกอย่างก่อนเครื่องหมายจุลภาคถัดไป ไปที่โหมดแทรกเพื่อลบทุกอย่างระหว่างเคอร์เซอร์และเครื่องหมายจุลภาค; ข้อความที่ถูกลบจะถูกค้นหาโดยอัตโนมัติในรูปแบบ ดังนั้นเพื่อให้ง่ายหลังจากลบข้อความการเคลื่อนไหวฉันออกจากโหมดแทรกพร้อมการเน้นข้อความที่ถูกลบ ฉันจะขอบคุณมากถ้ามีคนช่วยฉันไขปริศนาคดีนี้ UPDATE คำตอบคือสิ่งที่ฉันต้องการ แต่! เมื่อฉันกดพิมพ์สิ่งที่แทนคำนั้นกด/cw <Esc>หลังจากที่ฉันคาดว่าจะทำเช่นเดียวกันกับเหตุการณ์ที่เกิดขึ้นต่อไป แต่หลังจากนำเสนอn(ไปที่เหตุการณ์ถัดไป) และ.(ทำซ้ำคำสั่งสุดท้าย) เพียงแค่เติมข้อความที่พิมพ์ล่าสุดแทนการแทนที่ เป้าหมายหลักของการทำแผนที่คือใช้กับn/Nและ.เพื่อทำซ้ำ ฉันพลาดอะไรไปหรือเปล่า

3
ข้ามไปยังคำที่ฉันเพิ่งเปลี่ยนไป
หากฉันมีดังต่อไปนี้: function foo(bar) { return bar + 1; } และฉันจะใช้cwในการเปลี่ยนแปลงครั้งแรกbarที่จะbazฉันจะข้ามไปจับคู่ต่อไปbarเพื่อที่ฉันสามารถใช้.เพื่อให้การเปลี่ยนแปลงเดียวกันได้หรือไม่ ฉันไม่สามารถใช้*เพราะการค้นหาคำปัจจุบันภายใต้เคอร์เซอร์และฉันก็โง่ไม่ได้ค้นหาbarเป็นครั้งแรกดังนั้นnจะไม่ทำงาน มีวิธีง่ายๆในการค้นหาคำที่เกิดขึ้นต่อไปเหมือนเดิมก่อนที่จะเปลี่ยนหรือไม่ ฉันไม่ต้องการค้นหาและแทนที่เนื่องจากอาจมีเหตุการณ์อื่นเกิดขึ้นbarในไฟล์ของฉันที่ฉันไม่ต้องการเปลี่ยนหรือเพราะมีเพียงสองกรณีbarเท่านั้นและฉันลืมไป:%s/bar/baz/ก่อนที่จะเริ่มและนั่นก็เกินไป ความพยายามอย่างมากในการเปลี่ยนอินสแตนซ์ที่เหลืออยู่เท่านั้น
12 search 

3
ความแตกต่างระหว่าง '\ zs' และ '\ @ <=' อะตอมใน Vim regex คืออะไร
นี่คือสิ่งที่ฉันได้รับจากเอกสาร: \zs"จะเริ่มต้นส่วนไฮไลต์" หลังจากจับคู่ regex ก่อนหน้าและ\@&lt;="จะเริ่มต้นเป็นส่วนหนึ่งที่ไฮไลต์" หลังจากจับคู่ก่อนหน้านี้อะตอม แต่ฉันไม่เข้าใจรายละเอียดปลีกย่อยของเรื่องนี้ดังนั้นทุกคนสามารถอธิบายได้ว่าพวกเขามีความลึกมากกว่านี้อย่างไร นี่คือสิ่งที่ทำให้ฉันอยากรู้: ถ้าฉันวิ่ง /\_s\zsnnoremap เช่นเลือกnnoremapนำหน้าด้วยช่องว่างหรือจุดเริ่มต้นของบรรทัด (เช่น newline จากบรรทัดก่อนหน้าดังนั้น\_ก่อนหน้านั้นs) จากนั้นเรียกใช้gnเพื่อเข้าสู่โหมดภาพและเลือกการแข่งขันนัดถัดไปด้วยเหตุผลบางประการเฉพาะคอลัมน์แรก (เช่น ครั้งแรกnในnnoremap) ถูกเลือก - แม้จะมีความจริงที่ว่าทั้งnnoremapคำที่ไฮไลต์ที่มีการ:hlsearchเปิด อย่างไรก็ตามถ้าฉันเรียกใช้การค้นหาแทน /\_s\@&lt;=nnoremap จากนั้นลองgnเลือกทั้งหมดnnoremapอย่างถูกต้อง เกิดอะไรขึ้นที่นี่? ฉัน (ฉันกล้าพูด) พบข้อบกพร่องที่คลุมเครือบ้างไหม

7
วิธีค้นหาบรรทัดที่ตรงกับบรรทัดปัจจุบันเป็นกลุ่ม
ฉันมักจะค้นหาคำด้วย:/stringแต่ถ้าฉันต้องค้นหาทั้งบรรทัดปัจจุบันวิธีการทำ event: 1 beacon: 0x02 //line 1 event: 19 beacon: 0x02 //line 2 event: 1 beacon: 0x03 //line 3 event: 1 beacon: 0x02 //line 4 event: 8 beacon: 0x01 //line 5 event: 19 beacon: 0x02 //line 6 event: 1 beacon: 0x02 //line 7 ตัวอย่างเช่นหากcursorปัจจุบันอยู่ที่line 1วิธีการค้นหาในทำนองเดียวกันกับ:/ข้อความที่มีทั้งบรรทัดปัจจุบัน เคอร์เซอร์ควรข้ามจากนั้นไปที่การจับคู่line 4และอีกครั้งเพื่อline 7

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