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

คุณลักษณะที่จัดทำโดยโปรแกรมแบบโต้ตอบเช่นเชลล์และโปรแกรมแก้ไขข้อความที่แทรกข้อความเพื่อเติมคำหรือวลีที่ผู้ใช้มีแนวโน้มที่จะเขียน

2
จะระบุการเติมข้อความอัตโนมัติที่กำหนดเองสำหรับคำสั่งเฉพาะได้อย่างไร
มีวิธีทุบตีรู้ว่าสิ่งที่จะแสดงเมื่อคุณสองแท็บ? ตัวอย่างเช่นฉันมีสคริปต์หลามscpyซึ่งต้องใช้อาร์กิวเมนต์คู่ ตัวอย่างเช่นapt-getถ้าคุณสองแท็บให้คุณ autoclean build-dep clean dselect-upgrade purge การอัพเกรดซอร์ส autoremove check dist-upgrade install ลบการอัพเดท มีวิธีทำเช่นนั้นสำหรับสคริปต์ / โปรแกรมของคุณเองหรือไม่? ฉันจำเป็นต้องรวมสคริปต์ python ของฉันไว้ในสคริปต์ทุบตีหรือไม่?

1
เครื่องมือบรรทัดคำสั่งมีรายการเติมข้อความอัตโนมัติของตัวเองได้อย่างไร
Bash ใน Ubuntu รู้ได้อย่างไรว่ารายการการกระทำเฉพาะของเครื่องมือ? ตัวอย่างเช่นถ้าฉันพิมพ์apt-getและแท็บสองครั้งฉันจะเห็นเพียงลบอัปเดตอัปเกรด ... ฯลฯ แต่ไม่ใช่การดำเนินการสำหรับคำสั่งอื่นหรือไฟล์ในไดเรกทอรีปัจจุบัน ฉันกำลังพัฒนาเครื่องมือบรรทัดคำสั่งใน Go และต้องการให้ฟีเจอร์นี้สำหรับ distros ที่รองรับ

4
วิธีกำหนดความสมบูรณ์ของคำสั่ง Bash เอง?
ในทุบตีมันง่ายพอที่จะตั้งค่าเสร็จสิ้นการอาร์กิวเมนต์คำสั่งที่กำหนดเองโดยใช้ในcompleteตัว ตัวอย่างเช่นหากคำสั่งสมมุติที่มีบทสรุปของfoo --a | --b | --cคุณสามารถทำได้complete -W '--a --b --c' foo นอกจากนี้คุณยังสามารถปรับแต่งเสร็จสิ้นการที่คุณได้รับเมื่อคุณกดTabที่ว่างเปล่าพร้อมรับคำใช้เช่นcomplete -E complete -E -W 'foo bar'จากนั้นกดแท็บที่พร้อมท์ที่ว่างเปล่าจะแนะนำเท่านั้นและfoobar ฉันจะกำหนดความสมบูรณ์ของคำสั่งเองได้ที่พรอมต์ที่ไม่ใช่ข้อยกเว้น เช่นถ้าฉันนั่งที่: anthony@Zia:~$ f วิธีทำเสร็จสิ้นการปรับแต่งเพื่อให้กดแท็บจะเสมอที่สมบูรณ์เพื่อfoo? (กรณีจริงที่ฉันต้องการคือlocTAB→ localcและพี่ชายของฉันซึ่งขอให้ฉันถามสิ่งนี้ต้องการด้วย mplayer)

2
มีวิธีการตั้งค่าการระบายสีสำหรับแท็บซีดีเสร็จสมบูรณ์หรือไม่
ฉันใช้ Ubuntu 11.04 มีวิธีการตั้งค่าการระบายสีสำหรับการส่งออกหลังจากรายการแท็บเสร็จสมบูรณ์ของ cd, ls หรืออื่น ๆ ? กล่าวคือ myshell@root$ cd ~/user/files/ ฉันกดแท็บ ... myfile myfoo mybar <- ผลลัพธ์นี้เป็นสี? ฉันหวังว่าคุณจะสนุกกับแผนภาพของฉัน

1
เสร็จสมบูรณ์สำหรับอาร์กิวเมนต์แรกของ cd OLD NEW
ในzshการcdออกคำสั่งมีรูปแบบสองอาร์กิวเมนต์: การเปลี่ยนแปลงcd OLD NEW ${PWD/OLD/NEW}ด้วยระบบการทำให้สมบูรณ์สไตล์ใหม่ zsh สามารถทำให้เสร็จสมบูรณ์ได้NEW: อาร์กิวเมนต์ที่สองเสร็จสมบูรณ์ตามสิ่งที่OLDสามารถทดแทนได้เพื่อให้ได้ไดเรกทอรีที่มีอยู่ แต่อาร์กิวเมนต์แรกจะเสร็จสมบูรณ์ไปยังไดเรกทอรีที่มีอยู่เท่านั้น ฉันจะให้ zsh เสนอความสำเร็จที่เป็นค่าที่เป็นไปได้OLDนอกเหนือจากการทำไดเรกทอรีที่มีอยู่ให้สมบูรณ์ได้อย่างไร ตัวอย่างเช่นถ้าไดเรกทอรีปัจจุบัน/path/to/fooและยังมีไดเรกทอรี/also/to/fooและ/path/to/foo/primeแล้วcd pTabเสร็จไปp primeถ้าฉันตั้งใจจะวิ่งcd path alsoฉันก็อยากให้ zsh เสนอให้pathเหมือนกัน อย่างไร? การใช้ค่าที่พิมพ์ไว้แล้วของอาร์กิวเมนต์ที่สองเพื่อ จำกัด ความเป็นไปได้สำหรับอาร์กิวเมนต์แรกนั้นจะเป็นค่าบวก

4
เลือกรายการในรายการเติมข้อความอัตโนมัติเป็นกลุ่มโดยไม่ต้องแทรกตัวแบ่งบรรทัด
คุณลักษณะที่ค่อนข้างน่ารำคาญของเสียงเรียกเข้าคือถ้าคุณอยู่ในโหมดแทรกและทำการเติมข้อความอัตโนมัติ (Ctrl-N), ปุ่มลูกศรลงไปยังรายการที่ต้องการและกดปุ่ม Enter จากนั้นมันจะแทรกรายการ จากนั้นต้องลบ มีวิธีเลือกรายการจากรายการเติมข้อความอัตโนมัติโดยไม่ต้องขึ้นบรรทัดใหม่ที่ไม่ต้องการหรือไม่
22 vim  autocomplete 

1
เพิ่มอาร์กิวเมนต์จากคำสั่งก่อนหน้าไปยังการเติม zsh ให้สมบูรณ์
ใน zsh (รวมถึง bash) คุณสามารถใช้การขยายคำประวัติเพื่อแสดงถึงอาร์กิวเมนต์จากคำสั่งก่อนหน้า ตัวอย่างนี้แสดงการรับพารามิเตอร์ที่ 2 จากคำสั่งก่อนหน้าในประวัติที่มี!:#การขยาย: % echo foo bar baz foo bar baz % echo !:2 echo bar bar ฉันมักจะลืมสิ่งที่ # พารามิเตอร์อาร์กิวเมนต์เฉพาะคือและการพิมพ์!:#ไม่เสมอว่ารวดเร็วเมื่อฉันจำได้ว่ามันขัดแย้ง ฉันรู้ว่าmeta-.จะแทนที่อาร์กิวเมนต์สุดท้าย แต่บางครั้งก็ไม่ใช่อาร์กิวเมนต์สุดท้ายที่ฉันต้องการ ฉันต้องการเพิ่มข้อโต้แย้งจากคำสั่งก่อนหน้าเป็นข้อเสนอแนะเพื่อดำเนินการคำสั่งใด ๆ ที่ฉันพิมพ์ใน zsh ฉันสามารถหาวิธีสร้างฟังก์ชันเชลล์ที่สามารถสร้างอาร์เรย์ของอาร์กิวเมนต์ (0..N) จากคำสั่งสุดท้ายและผูกเข้ากับคำสั่งเฉพาะ _last_command_args() { last_command=$history[$[HISTCMD-1]] last_command_array=("${(s/ /)last_command}") _sep_parts last_command_array } # trying to get last_command_args to be suggested …
21 zsh  autocomplete 

2
วิธีการใช้ข้อเสนอแนะการติดตั้งแพคเกจใน Debian?
ฉันสังเกตเห็นว่าในขณะที่บน Ubuntu ถ้าฉันพิมพ์ต่อไปนี้: mc และมันไม่ได้ติดตั้งฉันได้รับข้อความด้านล่าง: The program 'mc' is currently not installed. You can install it by typing: sudo apt-get install mc อย่างไรก็ตามใน Debian นั้นไม่สามารถใช้ได้ มันเพิ่งให้ข้อความ "-bash: / usr / bin / mc: ไม่มีข้อความไฟล์หรือไดเรกทอรี" ฉันจะใช้ฟังก์ชันการทำงานเดียวกันในบรรทัดคำสั่ง bash บน Debian ได้อย่างไร ใช่ฉันรู้ว่าถ้ามันเป็นข้อเสนอแนะของแพคเกจที่ฉันต้องการฉันก็สามารถค้นหา regex ใช้ค้นหา apt-แคช อย่างไรก็ตามฉันหวังว่าจะได้คำแนะนำที่ง่ายขึ้นทันทีเมื่อพิมพ์ชื่อของโปรแกรม เป็นต่อการอภิปรายการทำงานให้บริการโดยแพคเกจคำสั่งที่ไม่พบ อย่างไรก็ตามแม้หลังจากติดตั้งแล้วและยังติดตั้งแพคเกจ bash-completion ก็ไม่สามารถใช้งานได้บน Debian bash …

1
คอมไพล์ด้วย zsh: ชื่อไฟล์ที่มีช่องว่างไม่ได้รับการหลบหนีอย่างเหมาะสม
เสร็จสิ้น Git: ฉันมีปัญหากับการเติมข้อความอัตโนมัติของชื่อคอมไพล์ในระบบของฉัน ฉันใช้zsh(5.0.5) กับgit(1.9.3) ใน OS X (10.9.3) ทั้งสองzshและgitได้รับการติดตั้งผ่าน homebrew (เอาท์พุทเวอร์ชั่นเต็มอยู่ที่ด้านล่างของโพสต์) gitความสมบูรณ์ของชื่อไฟล์ไม่ได้เป็นการแทรกช่องว่างอย่างที่ฉันคาดไว้ เมื่อฉันพิมพ์ชื่อไฟล์ด้วยช่องว่างในชื่อเชลล์จะแทรกชื่อไฟล์โดยไม่ต้องเว้นช่องว่าง zshความสมบูรณ์ในตัวของมันไม่ได้ทำอย่างนี้ แต่gitทำอย่างนั้น นี่คือตัวอย่างของสิ่งที่ฉันเห็น ฉันมีที่เก็บซึ่งมีไฟล์ไม่กี่ไฟล์และมีช่องว่างในชื่อ % ls -la test test four - latest.txt test three.txt test two เชลล์แบ็กสแลชเชลล์จะหนีชื่อไฟล์ตามที่คาดไว้เมื่อฉันใช้การเติมข้อมูลด้วยแท็บเพื่อใส่ชื่อไฟล์ % echo "testing" >> test<tab> การเติมข้อความอัตโนมัติให้กับสิ่งนี้หลังจากกดปุ่มแท็บสามครั้ง % echo "testing" >> test\ four\ -\ latest.txt ––– file test test\ four\ …
20 zsh  autocomplete  git 

3
ปิดใช้งานการเติมแท็บใน Bash สำหรับบางไดเรกทอรีที่มีไฟล์จำนวนมากหรือไม่
ฉันทำงานกับไฟล์จำนวนมากซึ่งฉันเก็บไว้ในไดเรกทอรี ทุกครั้งที่ฉันเข้าไปยังไดเรกทอรีนั้นและกดTabสองครั้งโดยไม่ได้ตั้งใจอาจใช้เวลานานเกินไป (อาจใช้เวลานานกว่าหนึ่งนาที) ในการแสดงไฟล์ที่ตรงกับรูปแบบและฉันก็ค่อนข้างรำคาญกับพฤติกรรมนี้ ตัวอย่างเช่นโครงสร้างไดเรกทอรีของฉันคือ: my-project/ ├── docs/ ├── data/ <---- contains around 200k files. └── analyser/ เนื่องจากฉันยังรักความสมบูรณ์อยู่มีการปิดใช้งานคุณลักษณะนี้เฉพาะในdata/ไดเรกทอรีหรือไม่ เช่นเดียวกับการหมดเวลาที่กำหนดไว้เป็นเวลา 5 วินาทีหรือสคริปต์ที่ปิดอัตโนมัติเมื่ออยู่ในไดเรกทอรีเฉพาะ

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

1
การเติมข้อความอัตโนมัติแบบไดนามิก zsh สำหรับคำสั่งที่กำหนดเอง
ฉันกำลังพยายามเขียนฟังก์ชั่นเสร็จสิ้นสำหรับฟังก์ชั่นที่กำหนดเองบางอย่างที่ฉันเขียน แต่ดูเหมือนจะดิ้นรนกับแม้แต่พื้นฐานที่สุด ฟังก์ชั่นตัวอย่างคือ: function eb_instances() { if [ "$#" -ne 2 ]; then echo "Usage eb_instances <aws profile name> <environment name>" echo "e.g.:" echo " eb_instances production kraken-prod-api" return 1 fi aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" "Name=tag:Name,Values=$2" --profile=$1 --output=json | jq -r ".Reservations[].Instances[].PrivateIpAddress" } สิ่งนี้มีสองข้อโต้แย้งตำแหน่ง<aws profile name>และ<environment name> ฉันต้องการตัวเลือกเสร็จสิ้นเพื่อ<aws profile …
19 zsh  autocomplete 

5
การเติมข้อความอัตโนมัติ Debian - apt (ไม่ใช่ apt-get) ไม่ทำงาน
ฉันอยู่ใน Debian Jessie 8.6 ฉันสังเกตเห็นว่าapt-getได้รับการเติมข้อความอัตโนมัติทุบตีที่คาดไว้เมื่อกดแท็บสำหรับแพ็คเกจและคำสั่ง แต่เมื่อพยายามใช้กับaptมันจะไม่ทำงาน ฉันจำได้ว่าใช้ xubuntu 16.04 มันใช้งานได้ฉันจึงพบว่ามันแปลกที่มันไม่ทำงานที่นี่ มีวิธีการเปิดใช้งานคำสั่งaptด้วยหรือไม่ ถ้าเป็นเช่นนั้นได้อย่างไร

1
ความสมบูรณ์ของแท็บ Zsh ไม่ทำงานตามที่ต้องการสำหรับเส้นทางบางส่วน
zshฉันต้องการกรณีตายเสร็จสิ้นเลือนสำหรับไฟล์และไดเรกทอรีใน หลังจากอ่านคู่มือสองสามชั่วโมงนี่คือสิ่งที่ฉันคิด: zstyle ':completion:*:*:*:*:globbed-files' matcher 'r:|?=** m:{a-z\-}={A-Z\_}' zstyle ':completion:*:*:*:*:local-directories' matcher 'r:|?=** m:{a-z\-}={A-Z\_}' zstyle ':completion:*:*:*:*:directories' matcher 'r:|?=** m:{a-z\-}={A-Z\_}' นอกจากนี้ฉันต้องการกดTABหนึ่งครั้งเพื่อแสดงความสำเร็จที่เป็นไปได้เพียงปรับเปลี่ยนสิ่งที่ฉันได้พิมพ์หากมีความสมบูรณ์เพียงอย่างเดียว จากนั้นการกดTABครั้งที่สองควรทำให้ฉันเข้าสู่โหมด "เสร็จสิ้นเมนู" จากคู่มือฉันพบสิ่งนี้: zstyle ':completion:*' menu select ตอนนี้ทุกอย่างทำงานได้ตามที่ควรยกเว้นในกรณีเดียว ฉันมีสองโฟลเดอร์Desktopและ.rstudio-desktopในโฮมไดเร็กตอรี่ของฉัน ตั้งแต่ฉันมีsetopt globdotsฉันคาดว่าจะพิมพ์ต่อไปนี้: $ cd ~/dktop<TAB> ที่จะออกคำสั่งของฉันเป็นเข้ามาและแสดงเป็นผู้สมัครเสร็จสิ้นและDesktop .rstudio-desktopแต่มันจะลบ dktopทิ้งฉันด้วยสิ่งต่อไปนี้: $ cd ~/ ฉันดูคู่มือที่เกี่ยวข้องทั้งหมดคำแนะนำคำถามการแลกเปลี่ยนกองและแหล่งข้อมูลอื่น ๆ แต่สิ่งที่ฉันทำฉันไม่สามารถทำงานนี้ได้ ที่น่าสนใจคือถ้าฉันอยู่ในโฮมไดเร็กตอรี่แล้วพิมพ์ต่อไปนี้ทุกอย่างจะทำงานได้ตามที่คาดไว้: $ cd dktop<TAB> นั่นคือเป็นเพียงปัญหาของเซกเมนต์ของเส้นทางที่ไม่นำหน้า (และคุณสามารถเห็นได้C-x hว่าสิ่งนี้สอดคล้องกับdirectoriesแท็กมากกว่าที่local-directoriesจะใช้แท็ก) เพื่อให้สามารถทำซ้ำได้ง่ายนี่คือสิ่ง~/.zshrcที่จะสร้างสถานการณ์และพฤติกรรมที่อธิบายไว้ข้างต้น (ทดสอบบนเครื่องเสมือน …
17 zsh  autocomplete 

1
แท็บเสร็จสมบูรณ์ของ“ ../” ใน zsh
ในทุบตีฉันสามารถใช้แท็บเสร็จสิ้นเพื่อย้ายไดเรกทอรีหนึ่งขึ้นและลงอีกเส้นทางอื่น ตัวอย่างเช่นสมมติว่าผมอยู่ใน$HOME/folder1และฉันต้องการที่จะไปcd เพียง แต่มีสองไดเรกทอรีเด็กและ$HOME/folder2$HOMEfolder1folder2 ในทุบตีฉันสามารถพิมพ์ cd ..[TAB]f[TAB]2 $HOME/folder2และจะจบลงใน ในการติดตั้ง zsh ใหม่ของฉันการกดcd ..[TAB]สร้างรายการของไดเรกทอรีลูกเหล่านั้น$HOME/folder1ซึ่งมีสอง.ในชื่อของพวกเขา มีวิธีง่ายๆในการรับพฤติกรรมที่ฉันคุ้นเคยหรือไม่? หรือมีบางสิ่งที่ง่ายกว่าในการบรรลุสิ่งที่ฉันต้องการใน zsh?

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