Вы можете проверить, является ли переменная числом следующим образом: $val -is [int]
Это будет работать для числовых значений, но не в том случае, если число заключено в кавычки:
1 -is [int]
True
"1" -is [int]
False
Вы можете открыть столько терминалов и оболочек одновременно, сколько захотите. Просто используйте M-x rename-buffer
, чтобы изменить имя существующего буфера *term*
или *shell*
, и в следующий раз, когда вы сделаете M-x term
или M-x shell
, будет создан совершенно новый буфер. В случае M-x shell
аргумент префикса заставит вас запросить имя нового буфера оболочки, как отметил offby1.
Несколько лет назад у меня была работа, на которой мне приходилось регулярно заходить на различные производственные серверы с именами "host01.foo.com", "host02.foo.com" и т. Д. Я написал небольшую функцию, подобную этой, чтобы упростить управление ими всеми:
(defun ssh-to-host (num)
(interactive "P")
(let* ((buffer-name (format "*host%02d*" num))
(buffer (get-buffer buffer-name)))
(if buffer
(switch-to-buffer buffer)
(term "/bin/bash")
(term-send-string
(get-buffer-process (rename-buffer buffer-name))
(format "ssh host%02d.foo.com\r" num)))))
Затем я привязал эту команду к (скажем) sh kbd> (super H), что позволило мне просто набрать M-5 ш KBD>. Если у меня еще не было буфера с именем *host05*
, он запустил бы новый буфер эмулятора терминала, переименовал его в *host05*
и отправил в ssh me на host05.foo.com. Если буфер *host05*
уже существует, он просто переключит меня на него. Очень удобно!
Я обычно делаю M kbd> - x kbd> server-start
, а затем использую emacsclient --no-wait
для открытия файлов. Я связал это с e
с некоторыми украшениями, чтобы было немного удобнее.
Я делаю всю свою работу в одном терминале и просто «выбрасываю» файлы, которые хочу редактировать, в Emacs, используя e
. Внутри Emacs я манипулирую, используя iswitchb
, и он работает просто отлично. YMMV.
Вместо нескольких окон терминала в emacs, я создаю другой xterm всякий раз, когда мне нужен новый терминал. Это, конечно, терпимо, потому что я использую очень легкий эмулятор терминала (urxvt), который запускается менее чем за 0,2 с.
Затем я использую свой оконный менеджер для переключения между ними и фреймами emacs. Настраиваемый оконный менеджер будет иметь множество опций для эффективного переключения между окнами. В emacs я использую windmove и ido-mode и привязал к C-tab функцию, которая переключается на последний буфер (потому что я часто использую C-x b)
Так что, не уверен, насколько это полезно для вас, поскольку оно сильно отличается от вашего шаблона использования, но это то, что работает для меня.
Полусвязанный - вы можете быстро запустить команду оболочки для выбранного файла с помощью
M-shift-!
. Это экономит много времени для небольших команд chmod и т. Д.