i3并不真正支持vim之类的键序列。任何键绑定都由单个键组成,其后是一个可选的不同(所以没有Shift+Shift
)修饰符的列表。并且在按下主键时需要按下所有修饰符。
话虽这么说,有两种主要方法可以拥有很多工作空间,而不必将它们绑定到长长的修饰符列表:
1.使用外部程序动态创建和访问工作区
您不必为每个工作空间都定义一个快捷方式,您只需通过向i3发送a workspace NEW_WS
即可即时创建它们,例如使用以下程序:i3-msg
i3-msg workspace NEW_WS
i3-msg move container to workspace NEW_WS
i3还附带了i3-input
命令,该命令会打开一个小的输入字段,然后以给定的输入作为参数运行命令
i3-input -F 'workspace %s' -P 'go to workspace: '
i3-input -F 'move container to workspace %s' -P 'move to workspace: '
将这两个命令绑定到快捷方式,您可以通过按快捷方式然后输入所需工作空间的名称(或编号)来访问任意数量的工作空间。(如果您仅使用编号的工作区,则可能要使用workspace number %s
而不是workspace %s
)
2.在键绑定模式下将工作区静态绑定到简单的快捷方式
另外,对于更静态的方法,您可以在i3配置中使用模式。您可能有用于集中和移动到工作区的单独模式:
set $mode_workspace "goto_ws"
mode $mode_workspace {
bindsym 1 workspace 1; mode "default"
bindsym 2 workspace 2; mode "default"
# […]
bindsym a workspace a; mode "default"
bindsym b workspace b; mode "default"
# […]
bindsym Escape mode "default"
}
bindsym $mod+w mode $mode_workspace
set $mode_move_to_workspace "moveto_ws"
mode $mode_move_to_workspace {
bindsym 1 move container to workspace 1; mode "default"
bindsym 2 move container to workspace 2; mode "default"
# […]
bindsym a move container to workspace a; mode "default"
bindsym b move container to workspace b; mode "default"
# […]
bindsym Escape mode "default"
}
bindsym $mod+shift+w mode $mode_move_to_workspace
或者,您可以使用单独的绑定在一个模式下聚焦和移动:
set $mode_ws "workspaces"
mode $mode_ws {
bindsym 1 workspace 1; mode "default"
bindsym Shift+1 move container to workspace 1; mode "default"
bindsym 2 workspace 2; mode "default"
bindsym Shift+2 move container to workspace 2; mode "default"
# […]
bindsym a workspace a; mode "default"
bindsym Shift+a move container to workspace a; mode "default"
bindsym b workspace b; mode "default"
bindsym Shift+b move container to workspace b; mode "default"
# […]
bindsym Escape mode "default"
}
bindsym $mod+shift+w mode $mode_move_to_workspace
在两个示例中,workspace
or move
命令都与链接mode "default"
,因此i3在每个命令之后自动返回到默认的键绑定映射。