คำถามติดแท็ก command-line

คำถามเกี่ยวกับคำสั่งอดีตหรือโคลอน สำหรับคำถามเกี่ยวกับตัวเลือกบรรทัดคำสั่งที่ใช้เรียกใช้ตัวแก้ไขให้ใช้แท็ก [การเรียกใช้]

4
วิธีแก้ไขเนื้อหาจากอินพุตมาตรฐาน
ฉันต้องการแก้ไขเนื้อหาในกลุ่มที่สร้างขึ้นแบบไดนามิกจากบรรทัดคำสั่งโดยไม่ต้องมีไฟล์ ในตัวอย่าง: $ echo This is example. | vim /dev/stdin $ cat /etc/hosts | vim /dev/stdin แต่มันล้มเหลวด้วยข้อผิดพลาด: เป็นกลุ่ม: คำเตือน: อินพุตไม่ได้มาจากเทอร์มินัล เป็นกลุ่ม: ข้อผิดพลาดในการอ่านอินพุตกำลังออก ... เป็นไปได้ไหมที่จะบรรลุเป้าหมายนั้น?

1
ประวัติคำสั่งถูกแก้ไขได้อย่างไรระหว่าง Vim หลายอินสแตนซ์?
Vim จะเก็บประวัติคำสั่ง ex (สามารถเข้าถึงได้ผ่าน:↑และq:) และประวัตินั้นจะคงอยู่หลังจากเลิก ถ้าฉันเรียกใช้หลายอินสแตนซ์ของ Vim (ผู้ใช้เดียวกัน, โฮมไดเร็กตอรี่เดียวกัน), Vim จะทำการอนุญาโตตุลาการระหว่างประวัติคำสั่งอย่างไร? ดูเหมือนว่ากระบวนการสุดท้ายที่จะออกจากการชนะ มีวิธีการเก็บประวัติคำสั่งของอินสแตนซ์ทั้งหมดหรือไม่

2
วิธีการหลีกเลี่ยงสตริงทั้งหมดในคำสั่ง:
มาดูกัน. ฉันมีการgvimทำงานและฉันต้องการเปิดไฟล์ที่เคารพautocmds ( ซึ่งออกกฎ--remote-tab ) ตอนนี้ฉันรู้ว่าฉันสามารถทำได้ (โดยทั่วไปมีการปรับแต่ง): gvim --remote-send ":tabe my_file<CR>" ซึ่งใช้งานได้ แต่ถ้าไฟล์มีช่องว่างหรือตัวอักษรแปลก ๆ ฉันต้องทำดังนี้: gvim --remote-send ":tabe my\\ file<CR>" (double \\เป็นเพราะหนึ่งในนั้นถูกกินโดยเชลล์สิ่งนี้เทียบเท่ากับการพิมพ์ด้วยตนเอง `:tabe my\ file` ในvimและมันใช้งานได้) ตอนนี้ฉันสามารถหาวิธีสร้างสตริงนั้นในเชลล์หรืออะไรก็ได้ แต่ฉันหวังว่าฉันจะ "อ้างคำสั่งทั่วโลก" สตริงในคำสั่ง ": tabe" เช่น gvim --remote-send ":tabe 'my file'<CR>" หรือ gvim --remote-send ":tabe \"my file\"<CR>" --- นี่เทียบเท่ากับการเขียนโดยตรงในบรรทัดคำสั่ง vim :tabe "my file"; …

3
เป็นกลุ่มไม่แสดงคำสั่งที่ถูกพิมพ์
ฉันอ่านvimtutorและในบทที่ 2.1 มีหมายเหตุเกี่ยวกับการพิมพ์คำสั่งเช่นdw : NOTE: The letter d will appear on the last line of the screen as you type it. Vim is waiting for you to type w . If you see another character than d you typed something wrong; press <ESC> and start over. แต่ฉันไม่เห็นคำสั่งที่ฉันพิมพ์ในบรรทัดคำสั่งทั้งใน vim หรือ gvim …

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

1
วิธีใช้ backtick-expansion เพื่อเติมอาร์กิวเมนต์
จากความช่วยเหลือ:help backtick-expansion: On Unix and a few other systems you can also use backticks for the file name argument, for example: :next `find . -name ver\\*.c -print` :view `ls -t *.patch \| head -n1` The backslashes before the star are required to prevent the shell from expanding "ver*.c" prior to …

3
ทำคำสั่งโหมด command-line พิมพ์ <Esc> และ Ctrl
ลองนึกภาพคุณต้องการพูดคำด้านล่าง หาก|เป็นตำแหน่งเคอร์เซอร์คุณสามารถพูดคำด้วยcw""&lt;Esc&gt;Pจากโหมดปกติได้อย่างง่ายดาย |below ฉันต้องการที่จะบรรลุพฤติกรรมเดียวกันในโหมดบรรทัดคำสั่ง คำถามของฉันคือฉันจะพูดกับโหมดบรรทัดคำสั่งที่ฉันต้องการพิมพ์ได้&lt;Esc&gt;อย่างไร ฉันพยายาม:norm cw""&lt;Esc&gt;Pและบางรูปแบบอื่น ๆ แต่ผมเพิ่งได้รับแทน""&lt;Esc&gt;P"below" ยังคงเกี่ยวข้องกับสิ่งนี้ฉันต้องการที่จะรู้ว่าฉันจะทำคำสั่ง Ctrl ประเภทโหมดบรรทัดคำสั่งได้อย่างไร ตัวอย่างเช่นฉันสามารถพูดคำดังกล่าวด้วยcw"&lt;C-r&gt;""&lt;Esc&gt;แทน แต่ฉันก็ต้องใช้ Command-line พิมพ์&lt;C-r&gt;ให้ฉัน ฉันจะทำสิ่งนี้ได้อย่างไร

2
แท็บที่มีลักษณะคล้าย Zsh ของเส้นทางบางส่วน
เกี่ยวข้องกับBash-like บางส่วนของแท็บที่สมบูรณ์สำหรับชื่อไฟล์ใน Vim หนึ่งในคุณสมบัติที่ยอดเยี่ยมอย่างแท้จริงของzshคือการที่คุณสามารถพิมพ์ตัวอย่างเช่นls /u/s/m/m/who.1กดและมีมันจะเสร็จสมบูรณ์Tab ls /usr/share/man/man1/who.1.gzเมื่อคุณคุ้นเคยกับมันแล้วมันน่ารำคาญมากที่จะกลับไป/u&lt;tab&gt;/s&lt;tab&gt;/m&lt;tab&gt;/m&lt;tab&gt;...โดยเฉพาะอย่างยิ่งเมื่อเส้นทางบางส่วนทั้งหมดสามารถแก้ไขได้เพียงเส้นทางเดียวเท่านั้น แต่แต่ละองค์ประกอบอาจมีความสำเร็จที่หลากหลาย สิ่งนี้สามารถเกิดขึ้นได้ในกลุ่มตัวอย่างเช่นเมื่อใช้:eหรือ:cd? มีคุณสมบัติอื่น ๆ ที่เกี่ยวข้องกับเส้นทางที่เป็นประโยชน์ใน zsh เช่นการใช้cd foo barเพื่อย้ายไปยังเส้นทางที่เทียบเท่ากับfooแทนที่ด้วยbar(เช่น/blah/foo/baz/yadaกลายเป็น/blah/bar/baz/yada) หากมีวิธีการแก้ปัญหาที่นำสิ่งเหล่านี้มาด้วย (โดยหลักแล้วมอบหมายงานที่เกี่ยวข้องกับเชลล์ให้กับเชลล์ที่ทำงานได้ดีมาก) มันจะดีมาก

3
วิธีการแบ่งบรรทัดเป็นหลายบรรทัดอย่างมีประสิทธิภาพ
ฉันได้รับข้อมูลเข้าสู่ระบบในไฟล์ข้อความที่มีความยาวหนึ่งบรรทัดโดยแต่ละค่าคั่นด้วยช่องว่าง มีคำสั่งหรือชุดคำสั่งที่จะแบ่งหนึ่งบรรทัดเป็นหลายบรรทัดหรือไม่?

2
ป้อนค่าตัวเลือกอัตโนมัติใน cmdline
ฉันไม่สามารถนับจำนวนครั้งที่ฉันได้ลองทำสิ่งนี้: :set foldmethod=syn^I ดูเหมือนว่าความสำเร็จนั้นไม่สามารถใช้กับค่าตัวเลือกได้! ในบางกรณีตัวเลือกเป็นสตริงที่ซับซ้อนซึ่งการทำให้สมบูรณ์อาจไม่สมเหตุสมผล (เช่น'comments'.) แต่มีความพยายามใด ๆ ที่จะให้การเสริมความสมบูรณ์แบบสำหรับกรณีใช้งานทั่วไปหรือไม่? ถ้าไม่ฉันจะทำตัวอย่างข้างต้นได้อย่างไร (สมมติว่าฉันต้องการที่จะทำให้หนึ่งในสาย['manual', 'indent', 'expr', 'marker', 'syntax'])

1
วิธีการแทนที่ในหลายบรรทัด?
ฉันต้องการแทรกคำในหลายบรรทัดมีคำสั่งใด ๆ ไหม :[2,3,5,7,11]s/^/word\ /g ซึ่งจะแทรกwordที่จุดเริ่มต้นของบรรทัด 2, 3 บรรทัด, 5 บรรทัด, 7 และ 11 ที่นี่มีหลายบรรทัดไม่ต่อเนื่องกัน

4
เรียกใช้ชื่อไฟล์ปัจจุบันสำหรับรุ่นในบรรทัดคำสั่ง
ฉันจะนำพา ธ ไปยังไฟล์ปัจจุบันในบรรทัดคำสั่งเพื่อพิมพ์ชื่อไฟล์ที่คล้ายกันได้อย่างไร ฉันไม่ต้องการตัวย่อที่จะถูกแทนที่ด้วยชื่อไฟล์ปัจจุบันฉันต้องการแก้ไขชื่อไฟล์พร้อมเส้นทางไดเรกทอรี ตัวอย่างเช่นฉันต้องการ:editไฟล์ที่มีชื่อคล้ายกันหรือในไดเรกทอรีที่คล้ายกันเช่น vim src/submodule/frontend/frobnicate2.c และตอนนี้ฉันต้องการแก้ไข../trunk/src/submodule/frontend/frobnicate.cและฉันต้องการแทรก../trunkและลบ2เท่านั้นไม่ใช่พิมพ์เส้นทางแบบเต็ม แน่นอนว่าฉันสามารถเลื่อนกลับไปที่เชลล์และใช้ประวัติคำสั่งของมันหรือฉันสามารถคัดลอก - วางเส้นทางผ่าน GUI แต่ฉันกำลังมองหาวิธีที่มีประสิทธิภาพมากขึ้นโดยไม่ต้องออกไปเป็นกลุ่ม

2
วิธีการทำงานกับโหมดบรรทัดคำสั่งวิธีที่ vi?
มีวิธีการโต้ตอบกับโหมดบรรทัดคำสั่งในขณะที่ยังคงอยู่ในตำแหน่งที่บ้านหรือไม่? โดยเฉพาะอย่างยิ่งการกระทำสองอย่างต่อไปนี้ยุ่งยากต้องเลื่อนนิ้วไปที่ปุ่มลูกศรและบางครั้งก็แย่กว่านั้นคือเมาส์ ย้ายไปรอบ ๆ : มีวิธีการย้ายไปมาในโหมดบรรทัดคำสั่งในขณะที่ยังคงอยู่ในตำแหน่งปกติหรือไม่? คุณสามารถคัดลอกและวางบนบรรทัดคำสั่งได้อย่างไร ฉันหมายถึงการคัดลอกทั้งจากส่วนหนึ่งของบรรทัดคำสั่งไปยังส่วนอื่นหรือจากข้อความหรือคลิปบอร์ด

2
วิธีเขียนบัฟเฟอร์ทั้งหมดไปยังเอาต์พุตมาตรฐานจากบรรทัดคำสั่ง?
ฉันต้องการเขียนบัฟเฟอร์ทั้งหมดลงในเอาต์พุตมาตรฐาน ( /dev/stdout) แทนไฟล์และคำสั่งต่อไปนี้ทำงานตามที่คาดไว้ในขณะที่แก้ไขไฟล์: :w &gt;&gt; /dev/stdout คำแนะนำ: กดControl+ Lเพื่อรีเฟรชหน้าจอ แต่มันไม่ทำงานอย่างที่คาดไว้เมื่อฉันพยายามทำสิ่งเดียวกันจากบรรทัดคำสั่ง (แบบไม่โต้ตอบ ): $ echo This is example. | vim - '+:w &gt;&gt; /dev/stdout' '+:q!' Vim: Reading from stdin... เช่นเดียวกันกับ:w !tee, :x! /dev/stdout, :%printและที่คล้ายกัน ก่อนที่จะเลิกพูดว่า: [Device] 1L, 17C appended. มีวิธีการบังคับให้ vim เขียนอินพุตมาตรฐานลงในเอาต์พุตมาตรฐานตรงกลางของไพพ์หรือไม่? อาจจะถูกบัฟเฟอร์อย่างใด?

1
ความแตกต่างระหว่างคำสั่งเต็มและสั้น
มีความแตกต่างระหว่างการใช้ในทางปฏิบัติ :e และ :edit ยกเว้นความสามารถในการอ่านซึ่งเป็นสิ่งที่สมเหตุสมผลในการทำแผนที่ที่จะใช้:editเพราะมีความชัดเจนมากขึ้น มีความแตกต่างระหว่างพวกเขาหรือไม่? หมายเหตุ:นี้นำไปใช้เช่นกันเพื่อทุกคำสั่งอื่น ๆ

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