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

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

3
จะแก้ไขแท็บที่เสร็จสมบูรณ์แล้วเพื่อไม่ซ่อนรายการได้อย่างไร
ฉันใช้ oh-my-zsh บน Mac OS X กับ homebrew'ed zsh 4.3.12 ฉันเพิ่งพบปัญหาแปลก ๆ ในscripts/not-usedฉันมีหลาย.Rไฟล์: breakdowns.R eventloop.R process-largeclients.R process-qt.R reprocess-pinning.R calculate-qt-error.R generate_decision_tree.R process-net.R process-scalingexp.R อย่างไรก็ตามเมื่อฉันลองls scripts/not-used/+ Tabความสำเร็จแรกคือls scripts/not-used/_.Rตำแหน่งที่_แสดงตำแหน่งของเคอร์เซอร์ ถ้าฉันกดTabอีกครั้งฉันจะได้สิ่งที่แปลกประหลาดนี้: $ ls scripts/not-used/.R breakdowns.R eventloop.R วิธีการยกเลิกพฤติกรรมนี้น่าเกลียด (ผิด)? ตัวเลือกที่ตั้งไว้คือ: alwaystoend autocd autonamedirs autopushd cdablevars completeinword correctall extendedglob extendedhistory noflowcontrol histexpiredupsfirst histignoredups histignorespace histreduceblanks histverify …

1
อะไรคือความมหัศจรรย์ที่ทำให้ฉันสามารถรีโมตไฟล์แบบแท็บขณะที่ฉันพิมพ์คำสั่ง scp
สันนิษฐานว่านี่เป็นคุณสมบัติที่มีให้โดยปลั๊กอินบางตัวที่ฉันเปิดใช้งานในการตั้งค่า oh-my-zsh ของฉัน (ฉันใช้ zsh มาหลายปีแล้ว) ฉันสังเกตเห็นตั้งแต่ฉันเพิ่มพับลิกคีย์ของฉันไปยังเซิร์ฟเวอร์ (ตอนนี้ฉันสามารถ SSH ไปยังเซิร์ฟเวอร์โดยไม่ต้องป้อนรหัสผ่าน) เมื่อฉันเขียนscpคำสั่งในเชลล์ของฉันฉันสามารถพา ธ ไฟล์รีโมตแบบแท็บได้จริง ๆ ! เช่น $ diff <(scp Remoteuser@remote.domain.net:/var/www/html/ ฉันกดแท็บแล้วใช้งานได้! (สำหรับสิ่งที่ฉันพยายามทำให้สำเร็จด้วยคำสั่งเองฉันจะใช้scpเพื่อ "คัดลอก" ไปยัง stdout และให้อาหารเป็นไฟล์ต่าง ๆ ด้วยวิธีนี้ฉันสามารถเห็นการเปลี่ยนแปลงที่แน่นอนที่ฉันปรับใช้กับเซิร์ฟเวอร์ก่อน วิ่งrsync) ฉันอยากรู้ว่าชิ้นส่วนใดที่ทำให้งานนี้เป็นอย่างดี มันเป็นสิ่งที่สร้างไว้ใน scp ที่รวมเข้ากับ z shell หรือไม่? หรืออย่างอื่น?

1
การทุบตีเสร็จสมบูรณ์สำหรับค่าที่คั่นด้วยเครื่องหมายจุลภาค
ฉันต้องการสร้างกฎความสมบูรณ์สำหรับรายการพารามิเตอร์ที่คั่นด้วยเครื่องหมายจุลภาค เช่นฉันมีคำสั่งที่ได้รับรายชื่อเซิร์ฟเวอร์: myscript -s name1,name2,name3 ในขณะนี้ฉันได้จัดการเขียนเสร็จสมบูรณ์ดังต่อไปนี้: _myscript () { local cur prev opts _get_comp_words_by_ref cur prev opts='-s' servers='name1 name2 name3' if [[ ${cur} == -* ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) else case "${prev}" in -s) if [[ "$cur" == *,* ]]; then local realcur prefix …

4
เติมชื่อไฟล์อัตโนมัติในไดเรกทอรี
คำถามนี้ค่อนข้างคล้ายกับคำถามนี้แต่ฉันไม่เข้าใจวิธีแก้ปัญหา ฉันรู้ด้วยบทช่วยสอนนี้แต่ฉันก็ยังไม่สามารถเข้าใจสิ่งที่ฉันทำผิดได้ ฉันกำลังพยายามเติมข้อความอัตโนมัติในรายการไดเรกทอรีที่อยู่ใน/something/: $ ls /something/ One Other Three ในแบบที่จะเกิดขึ้น: $ hi [TAB] One Other Three $ hi O[TAB] One Other เฉพาะเมื่อคำแรกเป็นhiและไม่เพียง /something/แต่ภายใน นี่คือสิ่งที่ฉันกำลังทำอยู่.profile: _codeComplete() { local cur=${COMP_WORDS[COMP_CWORD]} COMPREPLY=( $(compgen `ls /something/` -- $cur) ) } complete -F _codeComplete "hi "

1
วิธีการส่งออกสตริงที่สมบูรณ์เพื่อ stdout?
บางส่วนของgitคำสั่งมีตัวเลือกมากมายและมันมักจะจะเป็นประโยชน์ในการค้นหาผ่านพวกเขาสำหรับความต้องการหนึ่งที่ฉัน - ฉันเป็นเพียงการมองหาตัวเลือกที่ควบคุมTABความกว้างในgit-guiแต่มีประมาณ 200 git configสำเร็จ วิธีแก้ปัญหาที่ชัดเจนคือการคัดลอกความสำเร็จทั้งหมดลงในเครื่องมือแก้ไขและค้นหาผ่านสิ่งเหล่านั้น แต่ฉันอยากทำ [something] | grep tab ไม่มีmanหรือinfoหน้าสำหรับcompgen, help compgenไม่ได้อธิบายตัวเลือกของตัวเองและไม่มีอัตโนมัติที่สมบูรณ์แบบสำหรับcompgen(ว่าที่สำหรับประชด?) PS: compgen -Aไม่ทำงาน PPS: นี่ไม่ใช่คำถามเกี่ยวกับgit-gui- วิธีแก้ปัญหาสำหรับความกว้างของแท็บเป็นที่อื่น PPPS: นี่คือไม่ได้เกี่ยวกับคำสั่งอัตโนมัติเสร็จสิ้นเพียงพารามิเตอร์ของคำสั่ง

4
การทุบตีเสร็จสมบูรณ์ไม่สมบูรณ์ใน centos 7
yum install --enablerepo=epel bash-completionผมได้ติดตั้งเสร็จสิ้นทุบตีใช้ ในขณะที่ใช้งานได้กับคำสั่งพื้นฐานบางอย่าง (git & yum) แต่ฉันก็ขาดคอมไพเลอร์ส่วนใหญ่ไป ฉัน/etc/bash_completion.dมีดังต่อไปนี้: bash_completion.d] $ ls git iprutils redefine_filedir yum yummain.py yum-utils.bash แต่ผมรู้ว่ามี bash_completion สำหรับ IE แต่งหน้า (ซึ่งมีการติดตั้ง) และอื่น ๆ อีกมากมายการเปรียบเทียบเช่นกับผลลัพธ์ตัวอย่างที่นี่ ฉันจะรับสคริปต์คอมไพเลอร์ที่ขาดหายไปได้อย่างไร (โดยเฉพาะกับ yum ดังนั้นฉันไม่ต้องอัปเดตด้วยตนเอง) หากเป็นเรื่อง: การทำให้แท็บเสร็จสมบูรณ์ แต่ฉันไม่ได้จัดหาอะไรใน. bashrc ของฉัน มันเพิ่งเริ่มทำงานหลังจากติดตั้งแพคเกจ UPDATE:หลังจากตรวจสอบเวอร์ชั่นของ bash เสร็จแล้วฉันได้ติดตั้งตามที่ @fduff แนะนำแล้วฉันเห็นสิ่งต่อไปนี้: ติดตั้ง $ yum list | การเติม grep …

3
วิธีกำจัดสิ่งรบกวนเมื่อเริ่มต้น GUI จากเทอร์มินัล
ฉันต้องการเปิดใช้งานแอปพลิเคชัน GUI จากหน้าต่างเทอร์มินัลแทนที่จะใช้กราฟิกเดสก์ท็อป สิ่งที่น่ารำคาญก็คือบ่อยครั้งที่นักพัฒนาไม่ได้คาดหวังการใช้งานประเภทนี้ดังนั้นแอพจะพิมพ์ข้อความที่ไร้ประโยชน์เป็นความลับหรือไร้ประโยชน์มากมายไปยัง stdout หรือ stderr ความยุ่งเหยิงเพิ่มเติมบนเครื่องเทอร์มินัลเกิดขึ้นเนื่องจากการเรียกใช้โปรแกรมในเบื้องหลังโดยมี & จะสร้างรายงานการสร้างและการยกเลิกงาน วิธีแก้ปัญหาสำหรับปัญหาเหล่านี้ที่จะยอมรับอาร์กิวเมนต์บรรทัดคำสั่งและจัดการการเติมข้อความอัตโนมัติคืออะไร ที่เกี่ยวข้อง: /programming/7131670/make-bash-alias-that-takes-parameter

3
ฉันจะบอกความสมบูรณ์ของการใช้แท็บให้ถูกต้องสำหรับการขัดแย้งกับสคริปต์ Python ของฉันได้อย่างไร
ว่าฉันมีโปรแกรม hello.py และมีข้อโต้แย้งที่ถูกต้องหนึ่งข้อคือ: ./hello.py autoawesomesauce เป็นไปได้ที่จะพิมพ์: ./hello.py auto[tab] ณ จุดนี้อาร์กิวเมนต์ที่เสร็จสมบูรณ์บางส่วนจะถูกส่งไปยัง hello ซึ่งรับรู้ว่ามันเป็นเช่นนั้น ./hello.py autoawesomesauce ฉันรู้ว่า git ทำอะไรแบบนี้ แต่มันสามารถทำได้สำหรับ Python script + Bash หรือไม่?

3
ไม่คาดคิด Bash เสร็จสิ้นของ ~ บน OS X
ฉันกด~TabTabบนคำสั่ง bash และได้รับชุดของความสำเร็จที่ไม่คาดคิด ครั้งแรกมันดูเหมือนว่าทุกคนใน/Usersไดเรกทอรีและอีกมากมาย จากนั้นฉันคิดว่ามันกำลังทำการค้นหาแบบย้อนกลับของคนที่มีไดเรกทอรี "home" ใน/etc/passwordหรืออาจจะเป็นคนที่/var/empty- สิ่งนี้ดูเหมือนถูกต้อง สิ่งที่ฉันอยากรู้คือสิ่งที่เกิดขึ้นจริงและทำไมมันใช้งานได้

3
Bash เติมข้อความอัตโนมัติด้วยคำสั่ง vim
ใน bash การเติมข้อความอัตโนมัติของเส้นทางเพิ่งหยุดทำงานเมื่อออกvimคำสั่งโดยที่เส้นทางนั้นมีความลึกมากกว่าสองไดเรกทอรี (จะยังคงทำงานตามที่คาดไว้กับคำสั่งอื่นเช่นlsและcd) ตัวอย่างเช่นถ้าฉันพิมพ์ls .config/btsync/btแล้วกด TAB ls .config/btsync/btsync.confจะขยายไป ถ้าผมพิมพ์vim .config/btแล้วกด TAB vim .config/btsync/จะขยายไป อย่างไรก็ตามถ้าฉันพิมพ์vim .config/btsync/btแล้วกด TAB ไม่มีอะไรเกิดขึ้น (ฉันคาดว่าจะขยายvim .config/btsync/btsync.confเป็นlsตัวอย่างเช่นด้านบน ฉันได้รับปัญหาเดียวกันเมื่อทำงานในฐานะผู้ใช้ของตัวเองและเมื่อทำงานเป็น su ฉันอ่านโพสต์นี้ซึ่งกล่าวถึงปัญหาของ bash-completion เวอร์ชั่นเก่า แต่ฉันใช้ 2.1-5 UPDATE: หลังจากการทดสอบเพิ่มเติมฉันพบว่าปัญหารากคือทุบตีจะสมบูรณ์เพียงชื่อไดเรกทอรีไม่ใช่ชื่อไฟล์ UPDATE: ปรากฎว่าbash-completionเป็นสาเหตุโดยรวม ดูความคิดเห็นที่สองของฉันในคำตอบที่ยอมรับ ข้อเสนอแนะเกี่ยวกับสาเหตุที่เป็นไปได้ของพฤติกรรมนี้จะได้รับสุดซึ้ง!

2
ยกเลิกการเสร็จสิ้น แต่เสร็จสมบูรณ์เท่านั้นใน zsh
เมื่อฟังก์ชั่นเสร็จสิ้นใช้เวลานานฉันสามารถขัดจังหวะโดยกดCtrl+ C(คีย์อินเตอร์รัปต์เทอร์มินัลส่ง SIGINT) หรือCtrl+ G(ผูกไว้กับsend-break) ฉันถูกทิ้งให้อยู่กับคำที่ไม่สมบูรณ์ อย่างไรก็ตามหากฉันกดCtrl+ CหรือCtrl+ Gเมื่อฟังก์ชั่นเสร็จสิ้นการกดปุ่มของฉันอาจยกเลิกบรรทัดคำสั่งและแจ้งให้ฉันทราบทันทีแทนการยกเลิกการเสร็จสิ้น ฉันจะตั้งค่า zsh ได้อย่างไรเพื่อให้บางคีย์จะยกเลิกการเสร็จสิ้นอย่างต่อเนื่อง แต่จะไม่ทำอะไรเลยหากไม่มีฟังก์ชั่นเสร็จสิ้นที่ทำงานอยู่?

4
เติมไฟล์อัตโนมัติใหม่ล่าสุด
ฉันมีกระบวนการที่สร้างไฟล์ข้อความที่มีชื่อไฟล์ตามการประทับเวลาของช่วงเวลาของการสร้าง: $ ls 1378971222.txt 1378971254.txt 1378971482.txt 1378971488.txt 1378972089.txt 1378972140.txt 1378972141.txt 1378972153.txt 1378972155.txt 1378972241.txt ฉันจะเติมชื่อไฟล์ของไฟล์ที่สร้างล่าสุดโดยอัตโนมัติเช่นไฟล์ที่มี mtime ล่าสุดได้อย่างไร ไม่มีวิธีที่จะใช้ Tab-completion สำหรับไฟล์เหล่านี้เนื่องจากตัวละครเกือบทุกตัวในชื่อไฟล์จะถูกแชร์กับไฟล์อื่น ฉันหวังว่าจะหาทางลัด (เช่นการAlt .เติมข้อความอัตโนมัติครั้งสุดท้ายของคำสั่งสุดท้าย) ฉันมีการจัดการที่จะกุเรื่องนามแฝงต่อไปนี้ซึ่งเป็นที่ดีสำหรับVIMแต่ฉันชอบที่จะทราบว่าทางลัดวัตถุประสงค์ทั่วไปอยู่ที่ฉันสามารถใช้กับkde-open, sqlite3และการใช้งานอื่น ๆ alias lastest="vim `ls -t | grep -vE "^total [0-9]*$" | head -n1`"

1
Zsh เสร็จทำให้เปิดใช้งาน shift-tab
เมื่อ zsh แสดงเมนูของความสำเร็จที่เป็นไปได้ฉันต้องการให้ฉันใช้shift-tabเพื่อเข้าถึงรายการที่เสร็จสมบูรณ์ก่อนหน้านี้ - มีตัวเลือกที่ควบคุมว่าจะใช้คีย์ใดในการเข้าถึงรายการที่เสร็จสมบูรณ์ก่อนหน้านี้หรือไม่ และถ้าเป็นเช่นนั้นสิ่งที่ฉันจะต้องเพิ่มไปยัง~/.zshrc ไฟล์ของฉันเพื่อตั้งค่า ถ้ามันสร้างความแตกต่างฉันสามารถนำทางผ่านเมนูเสร็จโดยใช้ปุ่มลูกศร แต่ฉันไม่ชอบการทำเช่นนี้เพราะปุ่มลูกศรรู้สึกผิดที่และใช้งานไม่สะดวก

1
การเติมเต็มของแท็บ Bash จะขยาย“ ~” ไปเป็น“ / home / ___” เมื่อไม่เคยมีมาก่อน
ก่อนหน้านี้หากผมพิมพ์ก่อนที่มันจะกลายเป็น~/biTab ~/binแต่วันนี้มันเริ่มเปลี่ยนเข้าสู่~/biTab/home/username/bin ฉันอยากได้มันมาก่อน แต่ฉันไม่แน่ใจว่าเกิดอะไรขึ้น ... ฉันเพิ่มสคริปต์เพื่อแก้ไขการทุบตีของฉัน แต่ฉันลบมันออกจาก~./bashrcเซิร์ฟเวอร์แล้วรีสตาร์ทเซิร์ฟเวอร์ ไม่มีใครรู้ว่าสิ่งนี้จะทำให้เกิดขึ้น? หรือว่าฉันจะเปลี่ยนมันกลับมา? แก้ไข ดังนั้นฉันจึงพบสิ่งที่อาจทำให้เกิดสิ่งนี้ ... มันเกี่ยวข้องกับ/etc/bash_completionและสิ่งต่าง ๆ เช่นนั้น เมื่อฉันทำbind -vมันแสดงให้เห็นการขยายตัวตัวหนอนที่จะปิด ดังนั้นฉันคิดว่าถ้าฉันแก้ไข (เช่นแฮ็ค) มันจะหายไป แต่นั่นไม่ได้ตอบสนองอะไรเลย - การเปลี่ยนแปลงนี้เกิดขึ้นได้อย่างไรในตอนแรก? ฉันไม่เคยวิ่งอะไรเลยsudoและหลังจากปิดหลายครั้งและเริ่มต้นพฤติกรรมนี้ใหม่อีกครั้ง

1
อัพเดตรายการเสร็จสมบูรณ์แบบไดนามิกใน zsh
ฉันพบว่ารายการผลการ zsh ของการTabเสร็จสมบูรณ์มีประโยชน์มาก แต่ฉันต้องการปรับพฤติกรรมของพวกเขาเล็กน้อย: ควรปรากฏขึ้นเมื่อฉันTabเป็นครั้งแรกและหลังจากนั้นอัปเดตแบบไดนามิกโดยมีการเพิ่มตัวอักษรใหม่ทุกตัว พฤติกรรมเริ่มต้นคือคำแนะนำจะถูกประเมินTabอีกครั้งเมื่อคุณอีกครั้งฉันต้องการบันทึกการกดปุ่มซ้ำหลายครั้ง ( อัปเดต:แต่แสดงรายการความสำเร็จที่เป็นไปได้เท่านั้นไม่ควรแก้ไขบรรทัดพรอมต์ที่แท้จริงของฉันโดยอัตโนมัติแม้ว่าจะเหลือเพียงตัวเลือกเดียวเท่านั้น) มีวิธีใดบ้างที่จะบรรลุพฤติกรรมดังกล่าว
13 zsh  autocomplete 

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