MPROC並行運行多個命令,並分別顯示每個命令的輸出。
當您從事項目時,您通常需要運行相同的命令列表。例如: webpack serve , jest --watch , node src/server.js 。使用MPROC,您可以在mprocs.yaml中列出這些命令,並通過運行mprocs運行所有命令。然後,您可以在運行命令的輸出之間切換並與它們進行交互。
它類似於並發,但MPROCS分別顯示每個命令的輸出,並允許與進程進行交互(您甚至可以在MPROC內部的VIM中工作)。


為您的平台下載可執行文件,然後將其放入路徑中包含的目錄中。
npm install -g mprocsyarn global add mprocsbrew install mprocscargo install mprocsscoop install mprocsyay mprocsyay mprocs-bingit clone ' https://mpr.makedeb.org/mprocs '
cd mprocs/
makedeb -simprocs cmd1 cmd2 … (示例: mprocs "yarn test -w" "webpack serve" )或者
mprocs.yaml文件mprocs命令示例mprocs.yaml :
procs :
nvim :
cmd : ["nvim"]
server :
shell : " nodemon server.js "
webpack : " webpack serve "
tests :
shell : " jest -w "
env :
NODE_ENV : testJSON/YAML配置模式
有兩種配置:全球和本地。全局配置是從~/.config/mprocs/mprocs.yaml (or〜 ~AppDataRoamingmprocsmprocs.yaml )加載的。本地配置是從mprocs.yaml加載的(或通過CLI參數設置: mprocs --config ./cfg/mprocs.yaml )。本地配置中的設置覆蓋設置全局。
<CONFIG_DIR>將被替換為配置所在的目錄的路徑。x鍵或退出Mprocs時)。默認的鍵綁定可以在使用KeyMap_procs , KeyMap_term或KeyMap_Copy字段中覆蓋。可用命令記錄在遠程控制部分。
有三個Keymap級別:
~/.config/mprocs/mprocs.yaml (or〜 ~AppDataRoamingmprocsmprocs.yaml在Windows上)./mprocs.yaml (可以被-c/ - config cli arg覆蓋)較低的槓桿從以前的水平覆蓋綁定。可以通過指定reset: true字段來清除以前級別的鑰匙綁定。
密鑰綁定是在<和>之間定義的,例如,例如, <Enter> (輸入鍵), <Down> (down箭頭), <Up> (up箭頭), <Cq> (ctrl + q)。
keymap_procs : # keymap when process list is focused
<C-q> : { c: toggle-focus }
<C-a> : null # unbind key
keymap_term : # keymap when terminal is focused
reset : true
<C-q> : { c: toggle-focus }
<C-j> :
c : batch
cmds :
- { c: focus-procs }
- { c: next-proc } $select操作員您可以根據當前操作系統定義不同的值。配置中的任何值都可以用$選擇的操作員包裝。基於當前OS提供不同的值,用以下方式定義一個對象:
$select: osmacos: value 。可能的值在此處列出:https://doc.rust-lang.org/std/env/consts/constant.os.html。$else: default value 。如果當前的操作系統不匹配並且缺少字段$else ,則MPROC將無法加載配置。示例mprocs.yaml :
procs :
my process :
shell :
$select : os
windows : " echo %TEXT% "
$else : " echo $TEXT "
env :
TEXT :
$select : os
windows : Windows
linux : Linux
macos : Macos
freebsd : FreeBSD 如果您使用--npm參數運行MPROC ,它將從package.json加載腳本。但是這些腳本默認不在運行,您可以手動啟動所需的腳本。
# Run mprocs with scripts from package.json
mprocs --npm集中流程列表:
q - 退出(軟殺死過程,然後等待退出)Q - 戒菸(終止過程)Ca聚焦輸出窗格x軟殺死選定的過程(發送sigterm信號,窗戶上的硬殺)X硬殺性過程(發送Sigkill)s啟動選定的過程,如果不運行r軟殺死選定的過程並在停止時重新啟動它R硬殺性過程並在停止時重新啟動a添加新過程C重複選定的過程d刪除選定的過程(必須先停止過程)e重命名選定的過程k或↑ - 選擇以前的過程j或↓ - 選擇下一個過程M-1 - M-8選擇過程1-8Cd或page down - 滾動輸出Cu或page up - 滾動輸出Ce滾動輸出3行Cy滾動輸出3行z放大到終端窗口v輸入複製模式集中流程輸出:
Ca聚焦過程窗格複製模式:
v開始選擇終點c複製選定的文本Esc離開復制模式Ca聚焦過程窗格Cd或page down - 滾動輸出Cu或page up - 滾動輸出Ce滾動輸出3行Cy滾動輸出3行h或↑ - 向上移動光標l或→ - 向右移動光標j或↓ - 向下移動光標h或← - 向左移動光標可選, MPROC可以在TCP端口上偵聽遠程命令。您必須在mprocs.yaml中定義遠程控制服務器地址( server: 127.0.0.1:4050 )或通過CLI參數( mprocs --server 127.0.0.1:4050 )。要發送一個命令運行MPROCS實例,請使用CTL參數: mprocs --ctl '{c: quit}'或mprocs --ctl '{c: send-key, key: <Cc>}' 。
命令被編碼為yaml。可用命令:
{c: quit-or-ask} - 停止進程並退出。如果運行任何過程,請顯示確認對話框。{c: quit} - 停止進程並退出。不顯示確認對話。{c: force-quit}{c: toggle-focus} - 在過程列表和終端之間切換焦點。{c: focus-procs} - 焦點過程列表{c: focus-term} - 焦點過程終端窗口{c: zoom} - 放大到終端窗口{c: next-proc}{c: prev-proc}{c: select-proc, index: <PROCESS INDEX>} ,頂部進程具有索引0{c: start-proc}{c: term-proc}{c: kill-proc}{c: restart-proc}{c: force-restart-proc}{c: show-add-proc}{c: add-proc, cmd: "<SHELL COMMAND>"}{c: duplicate-proc}{c: show-remove-proc}{c: remove-proc, id: "<PROCESS ID>"}{c: show-rename-proc}{c: rename-proc, name: "<NEW_NAME>"} - 重命名當前選擇的過程{c: scroll-down}{c: scroll-up}{c: scroll-down-lines, n: <COUNT>}{c: scroll-up-lines, n: <COUNT>}{c: copy-mode-enter} - 輸入複製模式{c: copy-mode-leave} - 離開復制模式{c: copy-mode-move, dir: <DIRECTION> } - 移動選擇的啟動或結束位置。可用說明: up/right/down/left 。{c: copy-mode-end} - 開始選擇選擇的終點。{c: copy-mode-copy} - 將選定的文本複製到剪貼板,然後留下複製模式。{c: send-key, key: "<KEY>"} - 將密鑰發送到當前過程。關鍵示例: <Ca> , <Enter>{c: batch, cmds: [{c: focus-procs}, …]} - 發送多個命令MPROC旨在使運行您最終反復運行的特定命令(例如編譯器和測試跑者)更容易。這與TMUX相反,TMUX通常用於在每個窗口/窗格中運行更長壽的過程(通常是外殼)。另一個區別是TMUX運行服務器和客戶端,該服務器允許客戶端稍後分離和reattach,從而保持流程運行。 MPROC的意義更大,用於您繼續重新運行的有限壽命過程,但是當Mprocs結束時,其在其窗口中運行的過程也是如此。
TMUX默認情況下沒有用於復制啟用的逃生序列。為了啟用其添加到~/.tmux.conf :
set -g set-clipboard on