福生无量摸鱼天尊

vibe coding系列:(三)一边vibe一边read

2026/05/04
9
0

安装

powershell安装

scoop bucket add extras
scoop install extras/wezterm
scoop install pwsh
scoop install yazi

这里的pwsh是powershell 7,现在更多都是用pwsh了,后面主题出现的inner liner错误,基本上都是没用pwsh的原因。

启动

WezTerm是独立的应用,你可以直接搜索打开,也可以在pwsh直接输入WezTerm打开,都可以

打开你会发现默认是C盘system32的cmd.exe,这显然不是很好,我们可以配置一下,打开pwsh:

notepad $env:USERPROFILE\.wezterm.lua

没有就新建一个,然后给出最小配置:

local wezterm = require 'wezterm'

return {
  config.default_prog = { 'pwsh.exe', '-NoLogo' }
  default_cwd = 'D:/OS',
}

默认打开powershell,然后给出默认路径(嘿,这图还是powershell的,就是因为我后面主题错了,所以前面才换成pwsh):

最简单就是:

Alt + v    左右分屏
Alt + s    上下分屏
Alt + h    切左边 pane
Alt + l    切右边 pane
Alt + j    切下面 pane
Alt + k    切上面 pane

这样就可以愉快的开始了。

美化

美化分为三层:

1. WezTerm 自带 color_scheme
2. 字体 + Nerd Font 图标
3. Shell prompt 美化,例如 Starship / Oh My Posh

字体

直接powershell安装:

scoop bucket add extras
scoop bucket add nerd-fonts

scoop install JetBrainsMono-NF
scoop install oh-my-posh
scoop install eza bat fd ripgrep fzf zoxide

然后编辑:

notepad $env:USERPROFILE\.wezterm.lua

原来已经有默认配置了,注意对比,替换即可:

local wezterm = require 'wezterm'
local config = wezterm.config_builder()

config.default_prog = { 'pwsh.exe', '-NoLogo' }
config.default_cwd = 'D:/OS'

-- 字体
config.font = wezterm.font_with_fallback {
  'JetBrainsMono Nerd Font',
  'CaskaydiaCove Nerd Font',
  'Consolas',
}
config.font_size = 12.5
config.line_height = 1.1

-- 主题
config.color_scheme = 'Tokyo Night Storm'

-- 窗口
config.window_background_opacity = 0.94
config.window_decorations = 'RESIZE'
config.window_padding = {
  left = 14,
  right = 14,
  top = 10,
  bottom = 8,
}

-- Tab 栏
config.use_fancy_tab_bar = false
config.hide_tab_bar_if_only_one_tab = false
config.tab_bar_at_bottom = false

-- 光标
config.default_cursor_style = 'BlinkingBlock'
config.cursor_blink_rate = 650

return config

这只是个开胃菜,这里其实配置的更多是整个终端的配置,具体细节美化还是要看主题

主题

想自己配置可以去这里进行查看,不过现在都用gpt了,直接问都能改,官方文档说明,它内置了大量来自 iTerm2-Color-Schemes、base16、Gogh、terminal.sexy 等来源的主题。这个页面会按字母列出所有内置主题,目前页面显示有 1001 个 color schemes

但是这些主题其实都很弱鸡,我还是推荐用Starship或者Oh My Posh

pwsh配置:

notepad $PROFILE

没有就直接创建,然后加入:

oh-my-posh init powershell --config "$env:USERPROFILE\.config\ohmyposh\dev.omp.json" | Invoke-Expression

注意:这里我们指定了一个自己的主题文件,这会在你的用户的.config\ohmyposh\dev.omp.json ,接下来powershell创建并且编辑它:

mkdir $env:USERPROFILE\.config\ohmyposh -Force
notepad $env:USERPROFILE\.config\ohmyposh\dev.omp.json

创建之后不用写东西,我们把别的主题copy过来:

Copy-Item "$(scoop prefix oh-my-posh)\themes\tokyo.omp.json" "$env:USERPROFILE\.config\ohmyposh\dev.omp.json" -Force

保存,重启之后,在pwsh就可以看到美化的主题了:

这种copy有一种好处,就是所有的修改都不会污染原来的主题,这就非常完美了,更多的主题可以看这里

配置背景图片

在配置文件里:

notepad $env:USERPROFILE\.wezterm.lua

写:

config.window_background_image = '路径/terminal-bg.png'
config.window_background_image_hsb = {
  brightness = 0.25,
  hue = 1.0,
  saturation = 0.8,
}

注意 Windows 路径建议用 /,不要用 \

它同时可以配置背景图、背景图透明度、背景图拉伸方式、背景图位置、背景图和主题背景色混合,ai一下即可。

配置vibe和read的模板

重点是:默认启动 pwsh.exe,启动目录指向项目目录,字体使用 Nerd Font,主题交给 WezTerm,prompt 交给 Oh My Posh。先配置:

notepad $env:USERPROFILE\.wezterm.lua

这里有两种方案,一种是看代码的,左边看代码,右上codex,右下shell,这种就是属于自己要review代码,或者看开源repo怎么做的时候,就会这么干。

local wezterm = require 'wezterm'
local act = wezterm.action

local config = wezterm.config_builder()

----------------------------------------------------------------------
-- Basic
----------------------------------------------------------------------

config.default_prog = { 'pwsh.exe', '-NoLogo' }
config.default_cwd = 'D:/OS'

----------------------------------------------------------------------
-- Appearance
----------------------------------------------------------------------

config.font = wezterm.font_with_fallback {
  'JetBrainsMono Nerd Font',
  'CaskaydiaCove Nerd Font',
  'Consolas',
}

config.font_size = 12.5
config.line_height = 1.08

config.color_scheme = 'Tokyo Night Storm'
config.window_background_opacity = 0.94
config.text_background_opacity = 1.0

config.window_decorations = 'RESIZE'
config.initial_cols = 150
config.initial_rows = 40

config.window_padding = {
  left = 14,
  right = 14,
  top = 10,
  bottom = 8,
}

config.use_fancy_tab_bar = false
config.hide_tab_bar_if_only_one_tab = false
config.tab_bar_at_bottom = false

config.default_cursor_style = 'BlinkingBlock'
config.cursor_blink_rate = 650

config.inactive_pane_hsb = {
  saturation = 0.8,
  brightness = 0.7,
}

----------------------------------------------------------------------
-- Keys
----------------------------------------------------------------------

config.keys = {
  { key = 'h', mods = 'ALT', action = act.ActivatePaneDirection 'Left' },
  { key = 'l', mods = 'ALT', action = act.ActivatePaneDirection 'Right' },
  { key = 'k', mods = 'ALT', action = act.ActivatePaneDirection 'Up' },
  { key = 'j', mods = 'ALT', action = act.ActivatePaneDirection 'Down' },

  { key = 'z', mods = 'ALT', action = act.TogglePaneZoomState },

  { key = 'v', mods = 'ALT', action = act.SplitHorizontal { domain = 'CurrentPaneDomain' } },
  { key = 's', mods = 'ALT', action = act.SplitVertical { domain = 'CurrentPaneDomain' } },

  { key = 'w', mods = 'ALT', action = act.CloseCurrentPane { confirm = true } },
}

----------------------------------------------------------------------
-- Auto Layout: Left Yazi, Right Top Codex, Right Bottom Shell
----------------------------------------------------------------------

wezterm.on('gui-startup', function(cmd)
  local mux = wezterm.mux
  local project_dir = 'D:/OS'

  -- 1. 创建主窗口,左侧 pane 跑 Yazi
  local tab, yazi_pane, window = mux.spawn_window {
    workspace = 'Ciallo~( ̄▽ ̄~)',
    cwd = project_dir,
    args = { 'pwsh.exe', '-NoLogo', '-NoExit', '-Command', 'yazi' },
  }

  -- 2. 从 Yazi 右侧切出 Codex pane
  local codex_pane = yazi_pane:split {
    direction = 'Right',
    size = 0.5,
    cwd = project_dir,
    args = { 'pwsh.exe', '-NoLogo', '-NoExit', '-Command', 'codex --yolo resume' },
  }

  -- 3. 从 Codex 下方切出 Shell pane
  codex_pane:split {
    direction = 'Bottom',
    size = 0.4,
    cwd = project_dir,
    args = { 'pwsh.exe', '-NoLogo' },
  }

  tab:set_title('Ciallo~( ̄▽ ̄~)')
end)

return config

注意,我这里配置了类似vim的快捷键,可以去掉的。

另一套是写代码的时候用的,左上左下都是codex,右上右下都是shell:

local wezterm = require 'wezterm'
local act = wezterm.action

local config = wezterm.config_builder()

----------------------------------------------------------------------
-- Basic
----------------------------------------------------------------------

config.default_prog = { 'pwsh.exe', '-NoLogo' }
config.default_cwd = 'D:/OS'

----------------------------------------------------------------------
-- Appearance
----------------------------------------------------------------------

config.font = wezterm.font_with_fallback {
  'JetBrainsMono Nerd Font',
  'CaskaydiaCove Nerd Font',
  'Consolas',
}

config.font_size = 12.5
config.line_height = 1.08

config.color_scheme = 'Tokyo Night Storm'
config.window_background_opacity = 0.94
config.text_background_opacity = 1.0

config.window_decorations = 'RESIZE'
config.initial_cols = 160
config.initial_rows = 42

config.window_padding = {
  left = 14,
  right = 14,
  top = 10,
  bottom = 8,
}

config.use_fancy_tab_bar = false
config.hide_tab_bar_if_only_one_tab = false
config.tab_bar_at_bottom = false

config.default_cursor_style = 'BlinkingBlock'
config.cursor_blink_rate = 650

config.inactive_pane_hsb = {
  saturation = 0.8,
  brightness = 0.7,
}

----------------------------------------------------------------------
-- Keys
----------------------------------------------------------------------

config.keys = {
  { key = 'h', mods = 'ALT', action = act.ActivatePaneDirection 'Left' },
  { key = 'l', mods = 'ALT', action = act.ActivatePaneDirection 'Right' },
  { key = 'k', mods = 'ALT', action = act.ActivatePaneDirection 'Up' },
  { key = 'j', mods = 'ALT', action = act.ActivatePaneDirection 'Down' },

  { key = 'z', mods = 'ALT', action = act.TogglePaneZoomState },

  { key = 'v', mods = 'ALT', action = act.SplitHorizontal { domain = 'CurrentPaneDomain' } },
  { key = 's', mods = 'ALT', action = act.SplitVertical { domain = 'CurrentPaneDomain' } },

  { key = 'w', mods = 'ALT', action = act.CloseCurrentPane { confirm = true } },
}

----------------------------------------------------------------------
-- Auto Layout: 2x2
-- Left Top: Codex
-- Left Bottom: Codex
-- Right Top: Shell
-- Right Bottom: Shell
----------------------------------------------------------------------

wezterm.on('gui-startup', function(cmd)
  local mux = wezterm.mux
  local project_dir = 'D:/OS'

  -- 1. 创建左上 pane:Codex 1
  local tab, codex_top_left, window = mux.spawn_window {
    workspace = 'Ciallo~( ̄▽ ̄~)',
    cwd = project_dir,
    args = { 'pwsh.exe', '-NoLogo', '-NoExit', '-Command', 'codex --yolo resume' },
  }

  -- 2. 从左上向右切出右上 pane:Shell 1
  local shell_top_right = codex_top_left:split {
    direction = 'Right',
    size = 0.5,
    cwd = project_dir,
    args = { 'pwsh.exe', '-NoLogo' },
  }

  -- 3. 从左上向下切出左下 pane:Codex 2
  codex_top_left:split {
    direction = 'Bottom',
    size = 0.5,
    cwd = project_dir,
    args = { 'pwsh.exe', '-NoLogo', '-NoExit', '-Command', 'codex --yolo resume' },
  }

  -- 4. 从右上向下切出右下 pane:Shell 2
  shell_top_right:split {
    direction = 'Bottom',
    size = 0.5,
    cwd = project_dir,
    args = { 'pwsh.exe', '-NoLogo' },
  }

  tab:set_title('Ciallo~( ̄▽ ̄~)')
end)

return config

当然你也可以改成claude code或者修改路径或者修改启动命令,都是可以的。所有不符合你的想法,ai一下改改配置,挺舒服的:

简单的切换就是:

Alt + h  切到左边 pane
Alt + l  切到右边 pane
Alt + k  切到上面 pane
Alt + j  切到下面 pane

Alt + w 删除plane

复制:Ctrl + Shift + C
粘贴:Ctrl + Shift + V

以后可玩

上面我们配置.wezterm.lua其实是所有东西都塞进去了,可以分开的:

C:\Users\用户\
├── .wezterm.lua
└── .config\
    └── wezterm\
        ├── appearance.lua
        ├── keys.lua
        └── launch.lua

如果不想每次都手动分屏,可以用 WezTerm 的 wezterm cli spawn 做脚本化启动。官方说明 wezterm cli spawn 可以生成新的 tab、window 或 pane,并返回新 pane 的 id。