ctrl+shift+p filters: :st2 :st3 :win :osx :linux
浏览

终端视图

Wramberg ST3 MacLinux

Sublime Text 3视图中的终端

详细信息

  • 0.5.0
  • github.com
  • 7年前
  • 2小时前
  • 7年前

安装

  • 总计 88K
  • Win 93
  • Mac 44K
  • Linux 44K
8月6日 8月5日 8月4日 8月3日 8月2日 8月1日 7月31日 7月30日 7月29日 7月28日 7月27日 7月26日 7月25日 7月24日 7月23日 7月22日 7月21日 7月20日 7月19日 7月18日 7月17日 7月16日 7月15日 7月14日 7月13日 7月12日 7月11日 7月10日 7月9日 7月8日 7月7日 7月6日 7月5日 7月4日 7月3日 7月2日 7月1日 6月30日 6月29日 6月28日 6月27日 6月26日 6月25日 6月24日 6月23日 6月22日
Windows 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0
Mac 4 3 2 2 3 6 3 1 4 0 4 4 3 5 3 3 3 2 1 5 9 5 1 2 2 1 3 3 2 2 2 2 3 1 3 4 3 0 0 1 2 1 3 0 3 2
Linux 2 2 3 1 3 3 4 2 3 2 1 3 0 3 5 3 2 5 1 1 3 5 3 2 0 5 3 2 5 0 2 0 2 3 0 3 3 6 1 4 3 3 6 3 1 0

说明文件

源代码
raw.githubusercontent.com

TerminalView

Build Status

这个插件已停止维护!

我不再使用Sublime Text,也没有时间来支持这个插件。有一个新的替代品叫做Terminus (https://github.com/randy3k/Terminus),编写这篇文档时它是活跃的。

适用于Sublime Text 3的Linux/macOS插件,允许在编辑视图内使用终端。

example.gif

该插件使用伪终端启动底层shell,这意味着它支持

  • 交互式应用程序(less,man,ipython,ssh等)
  • 自动完成
  • 终端快捷键(例如,ctrl+c)
  • 基本上你期望从终端得到的一切

此外,它还支持

  • 与Sublime Text构建系统集成
  • Shell颜色(目前支持8种颜色,256色的开发正在进行中)
  • 滚动回历史记录
  • 复制/粘贴
  • 静态语法高亮(作为shell颜色的补充)
  • 与其他插件的集成

注意,如果您遇到任何问题,请在下面的“常见问题”部分查找解决方案。

依赖关系

要运行此插件,您需要

  • 基于Linux的操作系统
  • Sublime Text 3(构建3092或更高版本)
  • bash(这不是必需的,但建议这样做,有关详细信息,请参阅下面的“更改shell”)

安装

要从https://packagecontrol.sublime.net.cn/packages/TerminalView安装

  1. 打开命令面板(默认为ctrl+shift+p)并查找“Package Control: Install Package”
  2. 搜索TerminalView并按enter键进行安装。

从GitHub手动安装,请运行:

git clone https://github.com/Wramberg/TerminalView.git $HOME/.config/sublime-text-3/Packages/TerminalView

用法

只需打开您的命令面板(默认为ctrl+shift+p),搜索“终端视图:打开Bash”。这将使用'bash -l'作为shell打开一个终端。默认情况下,没有快捷键用于打开终端视图,但您可以在您的快捷键映射中为一个键绑定terminal_view_open命令

{ "keys": ["ctrl+alt+t"], "command": "terminal_view_open" },

它也会做同样的事情。通过在命令面板中搜索“终端视图”可以对TerminalView的所有配置进行配置。或者,它也可以通过菜单访问: 首选项->包设置->终端视图。配置包括

  • 快捷键
  • 设置
  • 面版命令
  • 颜色方案

这些将在本readme的剩余部分中进行更详细的讨论。

快捷键

以下键默认转发到shell中

  • 所有单个字符和数字
  • 所有符号(如果缺失一些,请创建一个问题)
  • 箭头键
  • homeenddeleteinsertpageuppagedown
  • escapetabspacebackspaceenter
  • ctrl+k以外的所有ctrl+组合(如果想要将其发送到shell而不是ST3,请看下方)
  • 所有alt+组合
  • 所有ctrl+组合

请注意,ctrl+组合依赖于键盘布局,不会转发。可以通过菜单或命令面板配置键绑定。

如果某些键绑定不起作用,它们可能被您的用户键绑定中的键绑定遮挡。要修复此问题,找出默认键绑定中缺少的键绑定并复制到您的用户键绑定中。例如,如果您在用户键绑定中绑定了alt+f,则需要在您的用户键绑定中插入以下内容

{"keys": ["alt+f"], "command": "terminal_view_keypress", "args": {"key": "f", "alt": true}, "context": [{"key": "setting.terminal_view"}]},

同样,如果您想覆盖一些默认的TerminalView键绑定,例如例如 ctrl+w,请将以下内容移动到您的用户键绑定中

{ "keys": ["ctrl+w"], "command": "close" },

最后,TerminalView还包括一些实用快捷键

快捷键 描述
ctrl + shift + c 将终端中的选择/行复制到剪贴板
ctrl + shift + v 将剪贴板内容粘贴到终端
alt + 鼠标滚轮向上 / 鼠标滚轮向下 在终端历史记录中向前/向后滚动(仅在Linux上有效 - 详细信息请参见#28
shift + pageup / pagedown 在终端历史记录中向前/向后滚动
ctrl + shift + t / n 打开新文件
ctrl + shift + w / q 关闭终端视图
ctrl + shift + / / / 移动ST3光标(不是终端光标)
ctrl + shift + home / end 将ST3光标移动到行首/尾
escape 如果ST3光标位于终端光标之外,则将其移回 - 否则发送escape到shell。

请注意,标准ST3选择键绑定不会遮挡,这意味着您可以在终端中使用shift + keys进行选择,如果您愿意使用键盘。但是,这些键绑定不会移动实际的终端光标,因此每次终端更新时,光标都会跳回其初始位置。

设置

设置可在菜单或命令面板中找到。设置包括调整颜色、滚动历史记录和边距(以避免滚动条)等选项。只需将您要更改的设置复制到您的用户设置即可。

更改shell

如果您想使用其他shell,强烈建议通过bash和带有-c命令行参数来进行。您可以通过向terminal_view_open命令提供cmd参数来控制shell命令。另外,您还可以修改终端视图的标题以反映正在运行的shell。

例如,如果您想在按ctrl+alt+t时运行IPython shell,请将以下内容添加到您的快捷键文件中

{ "keys": ["ctrl+alt+t"], "command": "terminal_view_open", "args": {"cmd": "/bin/bash -l -c /usr/bin/ipython", "title": "Terminal (IPython)"}},

如果您确实想避免使用bash,您也可以直接运行您的shell

{ "keys": ["ctrl+alt+t"], "command": "terminal_view_open", "args": {"cmd": "/usr/bin/ipython", "title": "Terminal (IPython)"}},

但这处于实验性状态。有关此方面的未来开发计划已有,但现阶段只测试了bash。

完成操作后,您可以通过关闭视图(默认为ctrl+shift+qctrl+shift+w)或退出shell(例如按ctrl+d)来关闭终端。

调色板命令

可以通过菜单或命令调色板添加额外的调色板命令。这些命令仅作为键位绑定的替代品。

颜色方案

色彩方案用于动态色彩(由shell设置的色彩)和静态色彩(由语法着色设置的色彩)。可以通过将默认色彩方案复制到用户色彩方案文件中来修改色彩方案。这两个文件都可以在菜单中找到或通过命令调色板访问。

语法高亮

插件支持用户提供的静态色彩语法高亮。要使用此功能,请在您的Packages/User文件夹中创建一个<name>.sublime-syntax文件。可以通过菜单访问packages文件夹:在菜单中选择首选项 -> 浏览包。文件内容完全取决于您的需求 - 详细内容请参见https://text.sublime.net.cn/docs/3/syntax.html。例如,下面的代码突出显示bash中的提示符。

%YAML 1.2
---
name: TerminalViewBash
hidden: true
file_extensions:
  - terminal_view
scope: text.terminal_view
contexts:
  main:
    - match: '\w+@[A-z,\-_]+(?=:)'
      scope: terminalview.black_green
    - match: '([A-z,\-_/~0-9.]+\$)'
      scope: terminalview.black_blue

匹配可以改进,但为了本例目的已足够。请注意,作用域名称的选择是为了与色彩方案中已定义的作用域相匹配。要更改色彩方案,请参见上面的“色彩方案”部分。在这个例子中,语法文件被保存在Packages/User文件夹下的bash.sublime-syntax中。要使用它,当打开bash终端时,通过terminal_view_open命令传递它并带有syntax参数。

{ "keys": ["ctrl+alt+t"], "command": "terminal_view_open", "args": {"cmd": "/bin/bash -l", "title": "Bash Terminal", "syntax": "bash.sublime-syntax"}},

目前插件中没有提供语法文件,因此用户必须创建自己的文件。请注意,任何由shell设置的色彩(除了默认的黑色/白色之外)都将覆盖语法高亮设置的色彩。

项目切换和ST3启动

当切换项目或重新启动ST3时,插件会重新启动所有终端视图。遗憾的是,没有明显的恢复早期会话的方法,因此视图将完全重置。

整合到Sublime Text构建系统

在Sublime Text构建系统中,您可以将terminal_view_exec命令用作"target"键。这允许您将输入解析到正在运行的命令,这在标准构建系统中是不可能的。

例如,考虑以下.sublime-project

{
  "build_systems":
  [
    {
      "name": "My Build",
      "shell_cmd": "c++ program.c -o program",
      "working_dir" "$project_path"
      "variants":
      [
        {
          "name": "Run program",
          "shell_cmd": "./program",
          "working_dir": "$project_path"
        }
      ]
    }
  ],
  // Irrelevant code omitted
}

当您在菜单中选择工具 -> 以…构建时,您可以选择我的构建 - 运行程序选项。这会打开一个输出面板并运行您的程序。遗憾的是,如果程序需要用户输入,则无法提供输入。为了解决这个问题,您可以更改选项为

{
  "name": "Run program",
  "target": "terminal_view_exec",
  "shell_cmd": "./program",
  "working_dir": "$project_path"
}

这将在TermialView内部运行您的程序,您可以在其中与之交互。

与其他插件的集成

TerminalView支持通过terminal_view_send_stringterminal_view_exec命令与其他插件集成。前者可以将字符串发送到正在运行的终端,而后者将打开一个新的终端。例如,要在一个已打开的终端中运行'ls',请运行

window.run_command("terminal_view_send_string", {"string": "ls\n"})

要在一个新终端中运行命令,请运行

window.run_command("terminal_view_exec", {"cmd": "a.out"})

有关详细信息,请现在参阅源代码。

与TerminalView集成的插件列表

以下是与TerminalView集成的已知插件的列表。

常见问题

您在使用此插件时可能遇到的常见问题列表。

即使在键绑定部分中列出,也无法正常工作的快捷键

这很可能是由于您在用户键映射文件中将键绑定到其他功能。为了使其正常工作,请找到TerminalView键映射中缺失的键绑定并将其复制到您的用户键映射。有关详细信息,请参阅上面的键绑定部分。

终端响应良好,但表现异常(打印怪异序列,光标位于错误位置等)

请确保您没有bash_profile文件或类似文件更改环境变量的值。插件将其设置为“linux”,必须保持此状态。您可以在ST3的终端视图中通过调用env | grep TERM来检查它。如果值正确,您可以自由地为一个更深入的调查提交问题。

终端速度缓慢,并且/或使用大量内存

您可能还有与其他插件冲突的TerminalView插件。TerminalView对缓冲区进行了大量修改,可能与GotoLastEditEnhanced之类的插件冲突。在这种情况下,保存所有修改的历史记录会消耗未绑定的内存。请单独测试TerminalView,查看问题是否持续存在。

致谢

pyte终端仿真器(https://github.com/selectel/pyte)是此插件的 integral 部分,它使此插件成为可能,值得给予一定的认可。

在开发过程中,SublimePTY插件(https://github.com/wuub/SublimePTY)是解决发生的一些问题的良好灵感来源。您或许会发现这个插件中包含一些来自它的片段。

Javatar插件(https://github.com/spywhere/Javatar)在测试桩和通用测试结构方面是一个很好的起点。