Я часто работаю с git, и мне нравится iTerm2 за возможность устанавливать сочетания клавиш для команд. Например, я установил CTRL kbd> + ENTER kbd> на git status
.
Возможно ли это с помощью gnome-terminal или вы можете порекомендовать другой вариант для достижения этой цели?
Можно использовать bind -x
для привязки команды с ярлыком в Bash. Например, для привязки git status
команда с Crtl + p ярлык можно использовать:
bind -x '"\C-p":git status'
Помещенный это в ~/.bashrc
файл для запоминания этого. Из страницы справочника:
-x команда оболочки Причины keyseq:shell-команды
, которая будет выполняться каждый раз, когда keyseq вводится. Когда команда оболочки выполняется, оболочка устанавливает переменную READLINE_LINE на содержание буфера строки Readline и переменную READLINE_POINT к текущему местоположению точки вставки. Если выполняемая команда изменит значение READLINE_LINE или READLINE_POINT, то те новые значения будут отражены в состоянии редактирования.
Так как необходимо сохранить терминал открытым после того, как команда работала, помещая:
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
должен затем сохранить терминал открытым (пока Вы не совершаете нападки, Входят) после выполнений команды.
Таким образом, можно выполнить любую (сложную) команду в терминале, не закрывая его сразу:
$ 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 - получают установку xdotool
Создайте dirctory ~/bin
если это еще не существует, или выходит из системы/в или работает source ~/.profile
gterm_keys
(никакое расширение) в ~/bin
, делание его исполняемый файлТеперь можно выполнить любую команду, от сочетания клавиш, в frontmost gnome-terminal
окно путем добавления команды:
gterm_keys <command>
к сочетанию клавиш, как описано в [1]
В случае, если zsh используется вместо удара, следующая строка в ~/.zshrc
связывает git status
с ALT + , ВХОДЯТ .
bindkey -s '^[^M' 'git status\n'
Для получения ALT + ВХОДЯТ в Bash, я использую эту строку:
bind -x '"\e\C-m":git status'