ฉันมักจะทำงานกับคอมไพล์และรัก iTerm2 สำหรับความสามารถในการตั้งค่าแป้นพิมพ์ลัดสำหรับคำสั่ง ตัวอย่างเช่นผมตั้งCTRL+ ไปENTERgit status
เป็นไปได้ด้วยคำพังเพยขั้วหรือคุณสามารถแนะนำตัวเลือกอื่นเพื่อให้บรรลุนี้
ฉันมักจะทำงานกับคอมไพล์และรัก iTerm2 สำหรับความสามารถในการตั้งค่าแป้นพิมพ์ลัดสำหรับคำสั่ง ตัวอย่างเช่นผมตั้งCTRL+ ไปENTERgit status
เป็นไปได้ด้วยคำพังเพยขั้วหรือคุณสามารถแนะนำตัวเลือกอื่นเพื่อให้บรรลุนี้
คำตอบ:
คุณสามารถใช้bind -x
เพื่อผูกคำสั่งกับทางลัดใน Bash ตัวอย่างเช่นในการผูกgit status
คำสั่งกับCrtl+ pทางลัดคุณสามารถใช้:
bind -x '"\C-p":git status'
ใส่ลงใน~/.bashrc
ไฟล์เพื่อจดจำ จากหน้าคน:
-x keyseq: shell-command
ทำให้เชลล์คำสั่งถูกเรียกใช้งานเมื่อใดก็ตามที่ป้อน keyseq เมื่อเชลล์คำสั่งถูกเรียกใช้งานเชลล์จะตั้งค่าตัวแปร READLINE_LINE เป็นเนื้อหาของบัฟเฟอร์บรรทัดไลน์และตัวแปร READLINE_POINT เป็นตำแหน่งปัจจุบันของจุดแทรก หากคำสั่งที่ดำเนินการเปลี่ยนแปลงค่าของ READLINE_LINE หรือ READLINE_POINT ค่าใหม่เหล่านั้นจะปรากฏในสถานะการแก้ไข
bind -x '"\C-k":firefox'
ฉันใช้สิ่งนี้ แต่ใช้งานไม่ได้
bind
สามารถดูได้ที่นี่: stackoverflow.com/a/4201274/712334
เนื่องจากคุณต้องเปิดเทอร์มินัลหลังจากที่คำสั่งรันอยู่ทำให้:
gnome-terminal -e 'bash -c "git status; read line"'
ภายใต้คีย์ลัดรวมกันจะทำงาน มันจะเปิดหน้าต่างใหม่ gnome-terminal
และเรียกใช้คำสั่งภายใน
เลือก: การตั้งค่าระบบ> "แป้นพิมพ์"> "ทางลัด"> "ทางลัดที่กำหนดเอง" คลิกที่ "+" และเพิ่มคำสั่ง:
gnome-terminal -e 'bash -c "git status; read line"'
ถึงCtrl+Enter
แม้ว่าทางลัดที่แนะนำของคุณจะใช้งานได้คุณอาจเลือกชุดคีย์อื่นแล้วCtrl+ Enterเพราะอย่างน้อยก็ขัดแย้งกับLibreOffice
ทางลัดเพื่อข้ามไปยังหน้าใหม่
ในการgnome-terminal
เปิดหน้าต่างใหม่จากบรรทัดคำสั่งและเรียกใช้คำสั่งในหน้าต่างนั้นคุณสามารถใช้:
gnome-terminal -e 'bash -c <command>'
อย่างไรก็ตามแม้ว่าคำสั่งจะทำงานได้สำเร็จ แต่หน้าต่างเทอร์มินัลจะปิดทันทีก่อนที่คุณจะสามารถอ่านเอาต์พุต
ส่วน:
read line
คือให้เปิดเทอร์มินัล (จนกว่าคุณจะตีEnter) หลังจากคำสั่งรัน
ด้วยวิธีนี้คุณสามารถเรียกใช้คำสั่งใด ๆ (ซับซ้อน) ในเทอร์มินัลโดยไม่ต้องปิดมันทันที:
$ gnome-terminal -e 'bash -c "wmctrl -d; read line"'
จะส่งออก (ถ้าwmctrl
ติดตั้ง):
หลังจากกดEnterขั้วจะปิด
แน่นอนคุณสามารถวางหนึ่งซับง่ายๆภายใต้คีย์ลัด (สมมติว่าคุณxdotool
ติดตั้ง):
xdotool type "<command>"
อย่างไรก็ตามสิ่งนี้จะพิมพ์คำสั่งสุ่มสี่สุ่มห้าในแอปพลิเคชันใด ๆและการพิมพ์คำสั่งไม่ใช่ตัวเลือกที่ดีที่สุด
สคริปต์ขนาดเล็กด้านล่าง:
gnome-terminal
หน้าต่าง (ตาม pid)gnome-terminal
หน้าต่าง, Returnเครื่องรีด เนื่องจากสคริปต์ใช้คำสั่งเป้าหมายเป็นอาร์กิวเมนต์คุณสามารถวางหลายคำสั่งภายใต้ช็อตคัตหลายตัว
#!/usr/bin/env python3
import subprocess
import sys
import time
app = "gnome-terminal"
s = (" ").join(sys.argv[1:])
def get(cmd):
return subprocess.check_output(cmd).decode("utf-8").strip()
def front(app):
try:
# see if gnome-terminal is running at all (raising error if not)
app = get(["pgrep", app])
except subprocess.CalledProcessError:
app = False
if app:
# if so, see if the active window belongs to gnome-terminal comparing pids)
active = get(["xdotool", "getwindowpid", get(["xdotool", "getactivewindow"])])
return True if app == active else False
if front(app):
# copy command to clipboard
cm1 = ["/bin/bash", "-c", 'printf "'+s+'" | xclip -selection clipboard']
# paste in terminal window
cm2 = ["xdotool", "key", "Control_L+Shift_L+v"]
# press return
cm3 = ["xdotool", "key", "Return"]
for cm in [cm1, cm2, cm3]:
subprocess.call(cm)
สคริปต์ต้องการ xdotool
sudo apt-get install xdotool
สร้าง dirctory ~/bin
หากยังไม่มีให้ออกจากระบบ / ออกหรือเรียกใช้source ~/.profile
gterm_keys
(ไม่มีส่วนขยาย) ~/bin
เพื่อให้สามารถเรียกใช้งานได้ตอนนี้คุณสามารถเรียกใช้คำสั่งใด ๆจากปุ่มลัดในgnome-terminal
หน้าต่างด้านหน้าโดยเพิ่มคำสั่ง:
gterm_keys <command>
ไปที่คีย์ลัดดังอธิบายใน [1]
ในกรณี zsh ใช้แทนทุบตีบรรทัดต่อไปนี้ใน~/.zshrc
การเชื่อมโยงที่git status
จะ+ALTENTER
bindkey -s '^[^M' 'git status\n'
รับALT+ ENTERใน Bash ฉันใช้บรรทัดนี้:
bind -x '"\e\C-m":git status'
bindkey -s '^[^M' 'git status\n'
ซึ่งผูกกับ ALT + ENTER