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

โปรแกรมแก้ไขบรรทัดในเชลล์และโปรแกรมบรรทัดคำสั่งอื่น ๆ

1
ESC + {: มันคืออะไรและที่ฉันสามารถรู้เพิ่มเติมเกี่ยวกับมันได้หรือไม่
ฉันเล่นรอบ ๆ ที่พร้อมต์ bash และกด ESC ตามด้วย {, หลังจากนั้นเชลล์แสดงไฟล์ทั้งหมดให้เสร็จในสตริง fileglob เช่น: หากฉันพิมพ์bash Cตามด้วยESC+{เชลล์จะแสดงสิ่งนี้: bash CHECK{,1,2{,23{336{,66666},6},3{,6}}}เติมไฟล์และไดเรกทอรีที่เป็นไปได้ทั้งหมดที่เริ่มต้นด้วย C โดยอัตโนมัติโดยแสดงไฟล์ทดลองและไดเรกทอรีทั้งหมดที่ฉันทำ คืออะไรESC + {และที่ฉันสามารถทราบข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้? ฉันเห็นสิ่งนี้ใน CENTOS & Mac OSX พร้อมทุบตี

6
เปลี่ยนรูปร่างเคอร์เซอร์ (หรือสี) เพื่อระบุโหมด vi ใน bash
ชี้แจง:ผมไม่ได้ถามถึงวิธีการเปลี่ยนเคอร์เซอร์เมื่อใช้เป็นกลุ่มที่อยู่ในขั้ว ฉันต้องการให้เคอร์เซอร์เปลี่ยนเมื่อสลับระหว่างโหมดอินพุตและคำสั่งภายในโหมด Vi ของ Bash: set -o vi <CR> type some text <ESC> (the cursor changes shape/color) i (cursor change back) etc... ฉันพบสคริปต์ที่ทำให้การเปลี่ยนสีของเคอร์เซอร์ในโหมดการเปลี่ยนแปลงเป็นไปได้ในzshแต่ฉันไม่ต้องการเปลี่ยนเชลล์สำหรับคุณลักษณะนี้เพียงอย่างเดียว มีวิธีที่จะให้เคอร์เซอร์เปลี่ยนรูปร่างเช่นใน gvim (หรือเพียงแค่สี) เมื่อสลับระหว่างโหมดคำสั่งและโหมดแทรกในบรรทัดคำสั่ง Bash หรือไม่?
30 bash  vi  line-editor 

2
การเปิดพรอมต์คำสั่งของคุณในโปรแกรมแก้ไขข้อความ - สิ่งนี้เรียกว่าอะไร
หนึ่งในเทคนิคที่ฉันโปรดปรานใน Bash คือเมื่อฉันเปิด command prompt ใน text editor ฉันทำเช่นนี้ (ในโหมด vi) ESC vโดยการกด เมื่อฉันทำสิ่งที่อยู่ในพรอมต์คำสั่งของฉันจะปรากฏใน $ EDITOR ที่ฉันเลือก ฉันสามารถแก้ไขคำสั่งราวกับว่ามันเป็นเอกสารและเมื่อฉันบันทึกและออกจากทุกสิ่งในไฟล์ชั่วคราวนั้นจะถูกดำเนินการ ฉันประหลาดใจที่เพื่อนของฉันไม่เคยได้ยินคำแนะนำนี้ดังนั้นฉันจึงมองหาเอกสารที่ฉันสามารถแบ่งปันได้ ปัญหาคือฉันไม่พบอะไรเลย นอกจากนี้คำค้นหาที่เกี่ยวข้องกับเคล็ดลับนี้เป็นเรื่องธรรมดามากดังนั้นจึงไม่ช่วยเมื่อ Googling สำหรับเอกสาร ไม่มีใครรู้ว่าสิ่งที่เรียกว่าเทคนิคนี้เพื่อให้ฉันสามารถค้นหาได้จริง?

5
Bash คำสั่งเพื่อคัดลอกก่อนเคอร์เซอร์และวางหลังจาก?
ฉันไม่แน่ใจว่าจะใช้คำนี้ได้อย่างไร แต่บ่อยครั้งที่ฉันพบว่าฉันพิมพ์คำสั่งเช่นนี้: cp /etc/prog/dir1/myconfig.yml /etc/prog/dir1/myconfig.yml.bak ฉันมักจะพิมพ์เส้นทางสองครั้ง (ด้วยแท็บเสร็จ) หรือฉันจะคัดลอกและวางเส้นทางด้วยเคอร์เซอร์ มี bashfoo ที่ทำให้พิมพ์ง่ายขึ้นไหม

9
วิธีการพิมพ์พารามิเตอร์ใน bash console ซ้ำในปัจจุบัน?
ฉันแค่พิมพ์บางอย่างตามแนวของ: mv foo/bar/poit/zoid/narf.txt และทันใดนั้นเองฉันก็ต้องพิมพ์พารามิเตอร์ส่วนใหญ่อีกครั้ง mv foo/bar/poit/zoid/narf.txt foo/bar/poit/zoid/troz.txt ถึงแม้จะมี tabcompletion แต่ก็ค่อนข้างเจ็บปวด ฉันรู้ว่าฉันสามารถคัดลอกวางพารามิเตอร์โดยการเลือกข้อความและคลิกกลาง แต่ไม่ดีพอ ฉันต้องการที่จะอยู่บนแป้นพิมพ์ ดังนั้นมีวิธีการคัดลอกวางพารามิเตอร์ปัจจุบันของบรรทัดโดยใช้แป้นพิมพ์หรือไม่

4
ZSH: ประวัติการค้นหาบนปุ่มขึ้นและลง?
ขณะนี้ฉันมีสิ่งต่อไปนี้ใน. zshrc ของฉัน: bindkey '^[[A' up-line-or-search bindkey '^[[B' down-line-or-search อย่างไรก็ตามดูเหมือนว่าจะตรงกับเนื้อหาของอินพุตปัจจุบันของฉันก่อนที่จะมีอักขระเว้นวรรค ตัวอย่างเช่นsudo ls /จะจับคู่ทุกบรรทัดในประวัติของฉันที่ขึ้นต้นด้วยsudoในขณะที่ฉันต้องการให้จับคู่ทุกบรรทัดที่ตรงกับข้อมูลที่ฉันป้อนทั้งหมดเท่านั้น (เช่นsudo ls /etcจะจับคู่ แต่ไม่ใช่sudo cat /var/log/messages) ฉันต้องเปลี่ยนอะไรเพื่อให้ได้พฤติกรรมตามที่ต้องการ นี่คือ. zshrc ทั้งหมดของฉันในกรณีที่มีความเกี่ยวข้อง: https://gist.github.com/919566

1
การใช้ตัวแก้ไขบรรทัดของ zsh เพื่อล้อมรอบกระบวนการย่อย
เป็นไปได้หรือไม่ที่จะใช้ตัวแก้ไขบรรทัดในตัวของ zsh ( zle) เพื่อป้อนข้อมูลเข้าสู่กระบวนการย่อย? นั่นคือผมอยากจะทำงานzlewrap mycommandที่zlewrapเป็นฟังก์ชั่น zsh และmycommandเป็นโปรแกรมใด ๆ ที่เพียงแค่อ่านบรรทัดจาก stdin; zlewrapได้อย่างมีประสิทธิภาพจะช่วยให้ความสามารถในการแก้ไขบรรทัด zle mycommandไป นี่คือรูปแบบของrlwrapที่ใช้เพียงแค่นี้ แต่มี readline และไม่ zle สำหรับการแก้ไขบรรทัด
22 zsh  line-editor 

4
อักขระตัวแรกของคำสั่งซ้ำบนจอแสดงผลเมื่อเสร็จสิ้น
สองตัวอักษรแรกซ้ำแล้วซ้ำอีกในขณะที่ฉันใช้Tabให้เสร็จ ในภาพหน้าจอด้านล่างcdซ้ำแล้วซ้ำอีก ฉันลอง rxvt-unicdoe, xterm, terminator แล้ว เทอร์มินัลอีมูเลเตอร์ทั้งหมดมีปัญหานี้ Zsh เวอร์ชั่น 5.0.2, ไฟล์กำหนดค่าon-my-zsh

6
ฉันจะป้อน n ซ้ำของตัวเลขในทุบตีโต้ตอบได้อย่างไร
ฉันต้องการเรียกใช้คำสั่ง foo --bar=baz <16 zeroes> ฉันจะพิมพ์ 16 ศูนย์ได้อย่างมีประสิทธิภาพได้อย่างไร ถ้าฉันAltกดค้างไว้1 6 0มันจะทำซ้ำสิ่งต่อไป 160 ครั้งซึ่งไม่ใช่สิ่งที่ฉันต้องการ ใน emacs ฉันสามารถใช้Alt-[number]หรือCtrl-u 1 6 Ctrl-u 0แต่ในทุบตีCtrl-uฆ่าสายที่ถูกพิมพ์ในขณะนี้และศูนย์ต่อไปเพียงแค่เพิ่ม 0 ลงในบรรทัด ถ้าฉันทำ foo --bar=baz $(printf '0%.0s' {1..16}) จากนั้นhistoryแสดงให้เห็นอย่างชัดเจนข้างต้นและไม่foo --bar=baz 0000000000000000; ie bash ไม่ทำงานในแบบที่ฉันต้องการ ( แก้ไข : เป็นจุดฉันต้องการที่จะใส่จำนวนศูนย์โดยไม่ต้องใช้การ$(...)ทดแทนคำสั่ง) (*) ฉันเดาว่าคำจำกัดความทางเทคนิคของ "มีประสิทธิภาพ" คือ "กับการกดแป้นพิมพ์ O (log n)" โดยเฉพาะอย่างยิ่งการกดแป้นจำนวนหนึ่งเท่ากับจำนวนหลักใน 16 (สำหรับค่าทั้งหมด 16) …

2
จะหยุดทุบตีแก้ไขประวัติเมื่อฉันนำมาใช้ใหม่และแก้ไขรายการได้อย่างไร
อินสแตนซ์ของการทุบตีบางอย่างเปลี่ยนประวัติคำสั่งเมื่อคุณใช้ซ้ำและแก้ไขคำสั่งก่อนหน้า ฉันค้นหาและค้นหา แต่ไม่พบสิ่งใดที่บอกว่าจะป้องกันคำสั่งในประวัติจากการแก้ไขเมื่อพวกเขาถูกนำมาใช้ซ้ำและแก้ไขได้ มีคำถามเช่นนี้แต่ดูเหมือนว่าจะพูดถึงวิธีรับมือกับประวัติศาสตร์ที่ถูกแก้ไข ฉันเพิ่งเจออินสแตนซ์ของ bash ที่แก้ไขประวัติเมื่อคุณใช้คำสั่งซ้ำ - bash shell ก่อนหน้านี้ทั้งหมดที่ฉันเคยใช้มี (เท่าที่ฉันสังเกตเห็น) ได้รับการกำหนดค่าไม่ให้เปลี่ยนประวัติเมื่อคุณใช้ซ้ำ และแก้ไขคำสั่ง (บางทีฉันแค่ไม่ได้ให้ความสนใจอย่างถูกต้องกับประวัติเชลล์ของฉันในช่วง 15 ปีที่ผ่านมาหรือมากกว่านั้น ... ) ดังนั้นนั่นอาจเป็นคำถามที่ดีที่สุด: ฉันสามารถบอกทุบตีไม่เคยแก้ไขประวัติ - และถ้าเป็นเช่นนั้นได้อย่างไร

2
คัดลอกและตั้งเครื่องหมายใน Bash เช่นเดียวกับ Emacs?
ผมอยากที่จะสามารถคัดลอกและวางข้อความในบรรทัดคำสั่งในทุบตีใช้ผูกแป้นพิมพ์เดียวกันกับที่ใช้ Emacs โดยค่าเริ่มต้น (เช่นใช้C-spaceสำหรับset-mark, M-wเพื่อคัดลอกข้อความC-y, M-yการวาง ฯลฯ ) เอกสาร GNU ทุบตีบอกว่าทุบตีมาพร้อมกับบางส่วนของปุ่มลัดเหล่านี้ตั้งขึ้นโดยค่าเริ่มต้น ตัวอย่างเช่น yanking ( C-y) ทำงานโดยค่าเริ่มต้นในเทอร์มินัลของฉัน อย่างไรก็ตามฉันไม่สามารถรับset-markและcopyสั่งให้ทำงานได้และดูเหมือนว่าพวกเขาจะไม่ถูกผูกไว้กับปุ่มใด ๆ โดยค่าเริ่มต้น .inputrcโดยปกติวิธีที่ผู้ใช้สามารถกำหนดของเธอเองผูกที่สำคัญคือการเพิ่มพวกเขาไป ดังนั้นฉันจึงค้นหาและพบฟังก์ชันทุบตีต่อไปนี้ในเอกสารที่ฉันคิดว่าสามารถช่วยฉันกำหนดพฤติกรรมที่คล้ายกับ Emacs ที่ฉันต้องการ (เช่นset-markกับC-spaceและcopyด้วยM-w) copy-region-as-kill () คัดลอกข้อความในพื้นที่ไปยังบัฟเฟอร์การฆ่าเพื่อให้สามารถดึงได้ทันที โดยค่าเริ่มต้นคำสั่งนี้ไม่ได้ผูกไว้ และ set-mark (C-@) ตั้งเครื่องหมายไปที่จุด หากมีการให้อาร์กิวเมนต์ที่เป็นตัวเลขเครื่องหมายถูกตั้งไว้ที่ตำแหน่งนั้น หากฉันเข้าใจอย่างถูกต้องหมายถึงข้างต้นที่copy-region-as-killไม่ได้ผูกไว้กับลำดับคีย์บอร์ดใด ๆ โดยค่าเริ่มต้นในขณะที่set-markถูกผูกไว้C-@โดยค่าเริ่มต้น ฉันลองใช้C-@เทอร์มินัลของฉัน แต่ฉันไม่คิดว่ามันจะทำงานset-markเพราะฉันไม่เห็นข้อความที่ไฮไลต์เมื่อฉันเลื่อนเคอร์เซอร์ ในกรณีใด ๆ ฉันพยายามเพิ่มการผูกแป้นพิมพ์ ( M-wและC-) เพื่อฟังก์ชั่น copy-region-as-killและset-markข้างต้นของฉัน.inputrcแล้วโหลดมันด้วยC-x C-rแต่ตอนนี้ไม่ได้ทำงาน ฉันรู้ว่ารายการอื่น ๆ ของฉัน.inputrcทำงานเพราะฉันมีการโยงคีย์อื่น ๆ …

1
คุณลักษณะทุบตีอยู่ที่ไหนเพื่อเปิดคำสั่งในเอกสาร $ EDITOR
ฉันได้ค้นพบเมื่อเร็ว ๆ นี้ว่าถ้าเรากดCtrl+ X Ctrl+ E, bash จะเปิดคำสั่งปัจจุบันในตัวแก้ไข (ตั้งค่า$VISUALหรือ$EDITOR) และดำเนินการเมื่อตัวแก้ไขถูกปิด แต่ดูเหมือนว่าจะไม่มีการบันทึกไว้ในmanหน้าเว็บ
16 bash  line-editor 

3
Ctrl-Backspace และ Ctrl-Delete ใน bash
วางบน Debian 8.3 stty werase '^H' หรือบน Arch Linux 2/2016 stty werase '^?' ใน.bashrc(ตัวอย่าง) ทำให้Ctrl- Backspaceลบคำสุดท้ายในสถานี ก็ยังไม่ได้เป็นลักษณะการทำงานเช่นเดียวกับในโปรแกรม GUI ที่ทันสมัย (เช่น Firefox): มันลบสุดท้ายช่องว่างคำ -separated และไม่คำสุดท้ายคั่นด้วยช่องว่างหรือ. : , ; " ' & / ( )ตัวอักษรเช่น มันเป็นไปได้ที่จะทำให้Ctrl- Backspaceประพฤติตนอยู่ในขั้วคล้ายกับโปรแกรม GUI สมัยใหม่? นอกจากนี้ยังมีวิธีใดที่จะทำให้Ctrl- Deleteลบคำก่อนเคอร์เซอร์ทันทีหรือไม่

2
ฉันสามารถนำทางเมนูการเติมแท็บของ zsh ด้วยปุ่ม hjkl ที่เหมือนกันได้หรือไม่
ฉันใช้ความสมบูรณ์ของแท็บเมนูของ zsh ฉันกดTabหนึ่งครั้งและรายการความสำเร็จที่เป็นไปได้จะปรากฏขึ้น ถ้าฉันกดTabอีกครั้งฉันสามารถนำทางรายการนี้ด้วยปุ่มลูกศร แต่ก็เป็นไปได้ที่จะนำทางพวกเขาด้วยviเหมือนH, J, K, Lกุญแจแทน? ผมใช้ emacs โหมดสำหรับการป้อนข้อมูลบรรทัดคำสั่งที่มีในbindkey -e ~/.zshrcฉันยังใช้zimกับ zsh ด้วย ถ้าเกี่ยวข้องคำสั่งที่ระบุระบบแท็บเสร็จสิ้นเป็นที่นี่

3
ล้าง / ลบรหัสผ่านที่พิมพ์ผิดในเทอร์มินัล
สิ่งหนึ่งที่ทำให้ฉันรำคาญโดยใช้เทอร์มินัลของ Linux คือเมื่อฉันต้องพิมพ์รหัสผ่าน invisble เช่นเมื่อคุณเรียกใช้ ssh เทอร์มินัลฉันสงสัยว่ามีวิธีล้าง / ลบรหัสผ่านที่มองไม่เห็นโดยไม่ต้องอาศัย backspace หรือกดปุ่ม Enter เพื่อลองอีกครั้ง

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