wezterm配置

每天看着暗红色的终端喜新厌旧了,感觉流离用的fish命令提示功能,还有在别人博客上经常看到的暗蓝色的都好酷,正如本文的分类,家要有家的样子,遂重新配置我的终端!

为什么选wezterm呢?因为它用rust实现,用lua写配置文件——因为喜欢

官方安装文档

配置

需要在~下创建一个配置文件.wezterm.lua,windows在%USERPROFILE%下

嗯,用lua做配置文件,也就意味着配置参数里可以塞很多复杂的逻辑,极其灵活,赞

贴一下我的:

local wezterm = require 'wezterm'
local config = {}

-- 基础设置
config.enable_tab_bar = true
config.hide_tab_bar_if_only_one_tab = true
config.use_fancy_tab_bar = true  -- false 为简洁样式
config.tab_bar_at_bottom = false  -- true 将标签栏放底部
config.tab_max_width = 25


-- 启动设置 (Windows)
config.default_prog = { 'wsl.exe', '-d', 'Ubuntu', '--cd', '/home/auceptin_fang','--', 'fish' }

-- 字体设置
config.font = wezterm.font_with_fallback({
  'Cascadia Code',  -- Windows 自带
  'Consolas',       -- Windows 自带
  'Courier New',    -- Windows 自带
  'Microsoft YaHei UI',
  'SimSun',
})

config.font_size = 14.0
config.line_height = 1.2  -- 行高倍数
config.cell_width = 1.0   -- 字符宽度倍数

-- 字体特性(连字等)
config.harfbuzz_features = { 'calt=1', 'clig=1', 'liga=1' }

-- 性能配置
config.front_end = "WebGpu" 
config.max_fps = 60
config.animation_fps = 60
config.enable_kitty_graphics = false

-- 配色方案

config.color_scheme = "Tokyo Night"

-- config.color_scheme = 'Batman'
-- config.color_scheme = "Catppuccin Mocha"
-- config.color_scheme = "Dracula"
-- config.color_scheme = "Nord"
-- config.color_scheme = "Gruvbox Dark"
-- config.color_scheme = "One Dark"
-- config.color_scheme = "Solarized Dark"


--[[ 自定义颜色
config.colors = {
  foreground = '#c0caf5',
  background = '#1a1b26',
  cursor_bg = '#c0caf5',
  cursor_border = '#c0caf5',
  cursor_fg = '#1a1b26',
  selection_bg = '#33467C',
  selection_fg = '#c0caf5',
}
]]


-- 背景透明度
config.window_background_opacity = 0.94  

-- 如果要使用背景图片,取消注释下面几行:
-- config.window_background_image = 'C:/'
-- config.window_background_image_hsb = {
--   brightness = 0.3,  -- 建议 0.3-0.5
--   hue = 1.0,
--   saturation = 1.0,
-- }

-- 如果要透明效果,设置 0.85-0.95:
-- config.window_background_opacity = 0.92

-- 光标设置
config.default_cursor_style = 'BlinkingBlock' -- 闪烁
config.cursor_blink_rate = 500
config.cursor_blink_ease_in = 'Ease'  -- 淡入效果:'Constant', 'Linear', 'Ease', 'EaseIn', 'EaseOut', 'EaseInOut'
config.cursor_blink_ease_out = 'Constant'  -- 淡出效果

-- 窗口设置
config.window_decorations = "RESIZE"
config.window_padding = {
  left = 10,
  right = 10,
  top = 0,
  bottom = 10,
}

config.initial_cols = 120
config.initial_rows = 30
config.window_close_confirmation = 'NeverPrompt'


-- 滚动设置
config.scrollback_lines = 10000
config.enable_scroll_bar = true

-- 快捷键
config.keys = {
  -- 字体大小调整
  { key = '+', mods = 'CTRL', action = wezterm.action.IncreaseFontSize },
  { key = '-', mods = 'CTRL', action = wezterm.action.DecreaseFontSize },
  { key = '0', mods = 'CTRL', action = wezterm.action.ResetFontSize },
  
  -- 重载配置
  { key = 'L', mods = 'CTRL|SHIFT', action = wezterm.action.ReloadConfiguration },
  
  -- 标签页管理
  { key = 't', mods = 'CTRL|SHIFT', action = wezterm.action.SpawnTab 'CurrentPaneDomain' },
  { key = 'w', mods = 'CTRL|SHIFT', action = wezterm.action.CloseCurrentTab{ confirm = true } },
  { key = 'Tab', mods = 'CTRL', action = wezterm.action.ActivateTabRelative(1) },
  { key = 'Tab', mods = 'CTRL|SHIFT', action = wezterm.action.ActivateTabRelative(-1) },

  -- 分屏管理
  { key = 'd', mods = 'CTRL|SHIFT', action = wezterm.action.SplitHorizontal{ domain = 'CurrentPaneDomain' } },
  { key = 'D', mods = 'CTRL|SHIFT', action = wezterm.action.SplitVertical{ domain = 'CurrentPaneDomain' } },
  { key = 'h', mods = 'CTRL|SHIFT', action = wezterm.action.ActivatePaneDirection 'Left' },
  { key = 'l', mods = 'CTRL|SHIFT', action = wezterm.action.ActivatePaneDirection 'Right' },
  { key = 'k', mods = 'CTRL|SHIFT', action = wezterm.action.ActivatePaneDirection 'Up' },
  { key = 'j', mods = 'CTRL|SHIFT', action = wezterm.action.ActivatePaneDirection 'Down' },
  { key = 'x', mods = 'CTRL|SHIFT', action = wezterm.action.CloseCurrentPane{ confirm = false } },
  
  -- 复制粘贴,备用
  { key = 'c', mods = 'ALT', action = wezterm.action.CopyTo 'Clipboard' },
  { key = 'v', mods = 'CTRL|SHIFT', action = wezterm.action.PasteFrom 'Clipboard' },
  
  -- 搜索
  { key = 'f', mods = 'CTRL|SHIFT', action = wezterm.action.Search 'CurrentSelectionOrEmptyString' },
  
  -- 清屏
  { key = 'k', mods = 'CTRL|ALT', action = wezterm.action.ClearScrollback 'ScrollbackAndViewport' },
  
  -- 新建标签
  { key = 'N', mods = 'CTRL|SHIFT', action = wezterm.action.ShowLauncherArgs { flags = 'FUZZY|LAUNCH_MENU_ITEMS' } },
  
  -- 快速跳转到标签页
  { key = '1', mods = 'ALT', action = wezterm.action.ActivateTab(0) },
  { key = '2', mods = 'ALT', action = wezterm.action.ActivateTab(1) },
  { key = '3', mods = 'ALT', action = wezterm.action.ActivateTab(2) },
  { key = '4', mods = 'ALT', action = wezterm.action.ActivateTab(3) },
  { key = '5', mods = 'ALT', action = wezterm.action.ActivateTab(4) },
}

-- 鼠标绑定
config.mouse_bindings = {
  -- 右键粘贴
  {
    event = { Down = { streak = 1, button = 'Right' } },
    mods = 'NONE',
    action = wezterm.action.PasteFrom 'Clipboard',
  },
  -- Ctrl+左键打开链接
  {
    event = { Up = { streak = 1, button = 'Left' } },
    mods = 'CTRL',
    action = wezterm.action.OpenLinkAtMouseCursor,
  },
  {
    event = { Up = { streak = 1, button = 'Left' } },
    mods = 'CTRL',
    action = wezterm.action.OpenLinkAtMouseCursor,
  },
  -- 双击选中整行并复制
  {
    event = { Up = { streak = 2, button = 'Left' } },
    mods = 'NONE',
    action = wezterm.action.CompleteSelection 'ClipboardAndPrimarySelection',
  },
}

-- 超链接规则
config.hyperlink_rules = wezterm.default_hyperlink_rules()


-- 添加自定义规则
table.insert(config.hyperlink_rules, {
  regex = [[\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b]],
  format = 'mailto:$0',
})


-- 标签栏样式
wezterm.on('format-tab-title', function(tab, tabs, panes, config, hover, max_width)
  local title = tab.active_pane.title
  if tab.is_active then
    return {
      { Text = ' 󰆍 ' .. title .. ' ' },
    }
  end
  return ' ' .. title .. ' '
end)

-- Windows 特定设置
-- 启动菜单 - 可以快速切换不同的 Shell
config.launch_menu = {
  {
    label = 'WSL Ubuntu (Fish)',
    args = { 'wsl.exe', '-d', 'Ubuntu', '--cd', '/home/auceptin_fang', '--', 'fish' },
  },
  {
    label = 'WSL Ubuntu',
    args = { 'wsl.exe', '-d', 'Ubuntu', '--cd', '/home/auceptin_fang' },
  },
  {
    label = 'Windows PowerShell',
    args = { 'powershell.exe' },
  },
  {
    label = 'Command Prompt',
    args = { 'cmd.exe' },
  },
}


return config

对的,顺便还安装了fish,右箭头自动命令补全真舒服吧!

效果

试一下——看起来舒服多了╰(°▽°)╯:

show

顺便把fish加到pwn镜像的dockerfile里