跳过主要内容
许多 CLI 工具(如 Git)使用 less 等分页器进行交互式、可滚动的输出。当 Cline 在你的终端中运行命令时,这种交互性会造成干扰——分页器可能会在第一页暂停并阻止进度。你可以配置你的 shell,以便当 Cline 启动终端时,分页器被禁用,输出正常流式传输。

工作原理

Cline 为其打开以运行命令的终端设置了一个环境变量
  • CLINE_ACTIVE — 当 shell 在 Cline 下运行时,此变量不为空
你可以在 shell 启动文件中检测此变量,并仅针对 Cline 运行的会话调整环境变量或别名。这使得你正常的交互式终端保持不变。

快速设置 (Zsh/Bash)

将以下内容添加到你的 ~/.zshrc~/.bashrc~/.bash_profile
# Disable pagers when the terminal is launched by Cline
if [[ -n "$CLINE_ACTIVE" ]]; then
  export PAGER=cat
  export GIT_PAGER=cat
  export SYSTEMD_PAGER=cat
  export LESS="-FRX"
fi
  • PAGER=cat 确保通用的分页器感知工具直接打印到 stdout
  • GIT_PAGER=cat 阻止 Git 调用 less
  • SYSTEMD_PAGER=cat 禁用 systemd 工具中的分页(如果存在)
  • LESS="-FRX" 如果工具仍然调用 less,使其行为更像流式输出
此配置仅在设置了 CLINE_ACTIVE 时生效,因此你的普通终端会保持其通常的交互式行为。

验证

  • 在 Cline 中打开一个运行终端命令的任务并检查
    • echo "$CLINE_ACTIVE" 打印一个非空值
    • git log 或其他长输出应该流式传输而不会暂停
  • 如果更改未生效
    • 确保你更新了 shell 的正确启动文件
    • 重新启动 VS Code/Cursor,以便集成终端重新加载你的 shell 配置
    • 确认你的终端配置文件中包含了 ~/.zshrc~/.bashrc

可选调整

  • 当你不想依赖环境变量时,优先使用命令行选项
# One-off usage (no aliases)
git --no-pager log -n 50 --decorate --oneline
systemctl --no-pager status nginx
journalctl --no-pager -u nginx -n 200
less -FRX README.md
  • 你也可以通过使用选项而不是环境变量,通过限定在 Cline 会话中的 shell 别名来覆盖分页
if [[ -n "$CLINE_ACTIVE" ]]; then
  # Make 'less' non-interactive by default
  alias less='less -FRX'
  # Disable paging for common tools via CLI flags
  alias git='command git --no-pager'
  alias systemctl='command systemctl --no-pager'
  alias journalctl='command journalctl --no-pager'
fi
  • 如果你喜欢环境变量,许多 CLI 也尊重通用或工具特定的分页器变量
    • Git: GIT_PAGER=cat
    • Systemd: SYSTEMD_PAGER=cat
    • Man pages: MANPAGER=cat (Cline 驱动的命令通常不需要)
  • 别名影响当前交互式 shell,而环境变量传播到子进程。选择最适合你工作流程的方法。