Я часто работаю с git и любил iTerm2 за возможность устанавливать сочетания клавиш для команд. Например, я установил CTRL + ENTER в git status.
Возможно ли это с помощью gnome-terminal или вы можете порекомендовать другой вариант для этого?
. Поскольку вам нужно оставить терминал открытым после запуска команды, поместите:
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>'
Однако, хотя команда будет успешно выполнена, окно терминала закроется (! d16)
Затем раздел:
read line
должен удерживать терминал открытым (пока вы не нажмете Enter ) после
Таким образом, вы можете запускать любую (сложную) команду в терминале без немедленного ее закрытия:
$ gnome-terminal -e 'bash -c "wmctrl -d; read line"'
(если установлен wmctrl):
После нажатия Enter терминал закроется.
Конечно, вы можете разместить простой однострочный ключ под клавишей быстрого доступа (если у вас установлен xdotool):
xdotool type "<command>"
. Однако это будет означать, что команда может , в любом приложении, и ввод команды не является самым чистым вариантом.
Маленький сценарий ниже:
[d36 ] выглядит, если активным окном является окно 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)
Теперь вы можете запустить любую команду, с помощью сочетания клавиш, в самой передней gnome-terminal, добавив команду:
gterm_keys <command>
к сочетанию клавиш, как описано в [1]
В случае использования zsh вместо bash следующая строка в ~/.zshrc связывает git status с ALT + ENTER.
bindkey -s '^[^M' 'git status\n'
Чтобы получить ALT + ВВОД в Bash я использую эту строку:
bind -x '"\e\C-m":git status'