ทางลัดในการลบคำว่า“ ฟอร์เวิร์ด” ในเทอร์มินัลยูนิกซ์คืออะไร?


14

ฉันทำCtrl+Wใน terminal mac เพื่อลบคำ (ลบจากที่เคอร์เซอร์อยู่ที่ที่จุดเริ่มต้นของคำ)

ฉันจะทำในสิ่งที่ตรงกันข้าม - ลบจากที่เคอร์เซอร์อยู่ที่ท้ายคำ?

คำตอบ:


14

ขึ้นอยู่กับเชลล์และโหมดแก้ไขบรรทัดคำสั่งที่ใช้งานอยู่

สำหรับเชลล์ที่มีโหมดการแก้ไขบรรทัดคำสั่ง Emacs ( set -o emacsในเชลล์บางตัว) ให้ใช้Alt+D(สิ่งนี้ไม่ทำงานบน macOS ไม่ว่าด้วยเหตุผลใด แต่พิมพ์อักขระให้ใช้Escdแทน)

สำหรับเชลล์ที่มีโหมดแก้ไขบรรทัดคำสั่ง Vi ( set -o viในเชลล์บางตัว) ให้ใช้Escdw(สิ่งนี้จะทำงานบน macOS ได้เช่นกัน)


เฉพาะใน zsh แม้ว่าไม่ Meta-D ลบชนิดเดียวกันของคำว่า Ctrl-W ไม่ (ว่างคนคั่น) ในbashในviโหมดคุณสามารถใช้dWเพื่อลบเหล่านั้น
Stéphane Chazelas

1
@ StéphaneChazelasใช่พวกเขา (ทั้งสอง keycombos) มีมุมมองที่แตกต่างกันในสิ่งที่ถือเป็น "คำ"
Kusalananda

คุณสามารถตรวจสอบ "ใช้ตัวเลือกเป็นเมตา" ในการตั้งค่าคีย์บอร์ดเทอร์มินัลเพื่อให้ทำงานได้
Jozef Legény

ทั้งสอง Esc + D และ Alt + D ทำงานในxfce4 0.6.3
neverMind9

1

สำหรับวินัยสาย TTY, ^Wลบพื้นที่สีขาวคั่นก่อนหน้าคำว่า

ในตัวviแก้ไขในโหมดแทรกให้^Wลบย้อนกลับไปที่จุดเริ่มต้นของลำดับแรกของ alnums หรือไม่ใช่ alnums (บนfoo-+-bar.. bazจะเป็นการลบครั้งแรกbazจาก..นั้นbarจากนั้นตาม-+-ด้วยfoo)

ในemacsเครื่องมือแก้ไข^Wลบตำแหน่งเคอร์เซอร์ออกจากเครื่องหมาย (ตำแหน่งที่คุณตั้งค่าไว้Ctrl+Space)

ตัวแก้ไขบรรทัดบางตัวเช่นreadline(ใช้โดยbash, gdb... ), zle(ใช้งานโดยzsh) pdkshเมื่ออยู่ในviโหมดให้ประพฤติเหมือนviในเรื่องนั้นและเมื่ออยู่ในemacsโหมดจะทำงานเหมือนมีระเบียบวินัยของ tty (ไม่ใช่emacs)

libedit(ใช้โดย BSD shells หรือ (เป็นทางเลือก) dash), tcshAT&T kshในemacsโหมดทำงานเหมือนemacsที่^Wลบเครื่องหมาย (เริ่มต้นที่จุดเริ่มต้นของบัฟเฟอร์)

สำหรับการลบคำไปข้างหน้าในviเครื่องมือแก้ไขคุณต้องทำในโหมดคำสั่ง ( ปกติ ) ด้วยdwเพื่อลบไปยังจุดเริ่มต้นของลำดับถัดไปของ alnums หรือ non-alnums (หรือจุดสิ้นสุดของบรรทัด) และdWเพื่อลบ ลำดับถัดไปของที่ไม่ใช่ช่องว่าง (จี้ของ^Wวินัยบรรทัด tty)

ในตัวemacsแก้ไขบรรทัดMeta-Dจะลบไปยังจุดสิ้นสุดของลำดับถัดไปของอักขระ alnum ตัวดำเนินการการเคลื่อนไหวของคำ ( Meta-B, Meta-F) ทำงานในทำนองเดียวกัน

บรรณาธิการบรรทัดคำสั่งเมื่ออยู่ในviโหมดทำงานเหมือนviแต่ในemacsโหมดคุณมีสองโรงเรียนหลัก: tcshโรงเรียนและkshโรงเรียน

kshโรงเรียน ( readline, ksh, yash) ทำงานส่วนใหญ่เช่นemacs( fishพฤติกรรมแตกต่างกันเล็กน้อยในวิธีการที่จะถือว่าไม่ใช่ alnum อักขระที่ไม่ใช่ช่องว่างทั้งในemacsและviโหมด)

ในtcshโรงเรียน ( tcsh, libedit, zsh) การเคลื่อนไหวคำจะขึ้นอยู่กับคำพูดของช่องว่างที่คั่นด้วยเพื่อให้มีความสอดคล้องกับสาย TTY วินัย^Wในเรื่องที่

ในzshพฤติกรรมนั้นสามารถปรับแต่งได้ด้วยสไตล์คำที่แตกต่างกันสำหรับวิดเจ็ตการเคลื่อนไหวของคำทั้งหมด

สำหรับreadlineคุณสามารถรับtcshโรงเรียน (และMeta-Dลบคำศัพท์ประเภทเดียวกันได้Ctrl-W) โดยเพิ่มใน~/.inputrc:

set keymap vi-move
"\e[EMACS~": emacs-editing-mode
set keymap emacs
"\e[VI~": vi-movement-mode
"\ed": "\e[VI~dW\e[EMACS~"
"\ef": vi-fWord
"\eb": vi-bWord

หรือในอีกทางหนึ่งให้จัดตำแหน่ง^Wวิดเจ็ตการเคลื่อนไหวคำอื่น ๆ (ทำตัวเหมือนMeta-Backscape) ด้วย:

set keymap emacs
"\C-W": backward-kill-word

ในฐานะที่เป็นสิ่งที่Metaสำคัญคือดูมี


-1

ใน Linux พยายามCtrl+kลบจากตำแหน่งที่เคอร์เซอร์อยู่ที่ท้ายคำ

มีทางลัดอื่น ๆ ไม่กี่รายการด้านล่าง (ทำงานใน Linux):

  1. Ctrl+e -> ใช้เคอร์เซอร์ท้ายคำ
  2. Ctrl+t -> Inter-change ตำแหน่งของตัวอักษร
  3. Ctrl+y -> เพิ่ม postfix "hh" เป็นคำปัจจุบัน
  4. Ctrl+u -> ลบทั้งบรรทัด
  5. Ctrl+o -> ทำงานเหมือนกับปุ่ม Enter
  6. Ctrl+p -> ทำงานเหมือนปุ่มลูกศรขึ้น
  7. Ctrl+a -> นำเคอร์เซอร์ไปที่ตำแหน่งเริ่มต้นของคำสั่ง
  8. Ctrl+d -> ปิดเทอร์มินัล
  9. Ctrl+f -> เลื่อนเคอร์เซอร์ไปข้างหน้าด้วยอักขระหนึ่งตัว
  10. Ctrl+h -> ทำงานเหมือนกับปุ่ม Backspace
  11. Ctrl+j -> ทำงานเหมือนกับปุ่ม Enter
  12. Ctrl+m -> ทำงานเหมือนกับปุ่ม Enter
  13. Ctrl+b-> ทำงานเหมือนกับปุ่มลูกศรขวา 14 Ctrl+4 -> ลบคำ

3
Ctrl+kลบไปยังจุดสิ้นสุดของเส้น Ctrl+uลบทั้งบรรทัด (หากเคอร์เซอร์อยู่ท้ายสุด) Ctrl+dส่ง EOF Ctrl+eไปที่จุดสิ้นสุดของบรรทัดฯลฯ
Kusalananda

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