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