私は頻繁にgitを使用し、コマンドのキーボードショートカットを設定できるiTerm2が大好きでした。たとえば、私は設定します CTRL+ENTER git status
に。
これはgnome-terminalで可能ですか、またはこれを達成するために別のオプションを推奨できますか?
bind -x
を使用して、コマンドをBashのショートカットにバインドできます。たとえば、git status
コマンドをバインドするには Crtl+p 使用できるショートカット:
bind -x '"\C-p":git status'
それを~/.bashrc
ファイルに入れて覚えておいてください。 manページから:
-x keyseq:シェルコマンド
Keyseqが入力されるたびにシェルコマンドが実行されるようにします。 Shellコマンドが実行されると、シェルはREADLINE_LINE変数をReadline行バッファーの内容に設定し、READLINE_POINT変数を挿入ポイントの現在の位置に設定します。実行されたコマンドがREADLINE_LINEまたはREADLINE_POINTの値を変更すると、それらの新しい値は編集状態に反映されます。
コマンドを実行した後、ターミナルを開いたままにする必要があるため、次のように入力します。
gnome-terminal -e 'bash -c "git status; read line"'
ショートカットキーの組み合わせの下で、仕事をします。 newgnome-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>"
ただし、これはコマンドblindly、anyアプリケーション、およびtypingを入力しますこのコマンドは最もクリーンなオプションではありません。
したがって、以下の小さなスクリプト:
gnome-terminal
ウィンドウであるかどうかを確認します(pidによる)gnome-terminal
ウィンドウにコマンドをpastes、押します 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
まだ存在しない場合は、ディレクトリ~/bin
を作成します。ログアウトまたはログインするか、source ~/.profile
を実行します。
gterm_keys
に~/bin
(拡張子なし)として保存し、実行可能にするこれで、ショートカットキーから、コマンドを追加することで、最前面のgnome-terminal
ウィンドウでanyコマンドを実行できます。
gterm_keys <command>
[1]
で説明されているショートカットキー
Bashの代わりにzshが使用される場合、~/.zshrc
の次の行はgit status
をバインドします ALT+ENTER。
bindkey -s '^[^M' 'git status\n'
取得するため ALT+ENTER Bashでは、次の行を使用します。
bind -x '"\e\C-m":git status'