Skip to content
/
Try

Terminal tabs: a real terminal inside Skink

A real shell in a tab, one key away from your file.

Press Shift+F12 to open a terminal tab with your shell. F12 flips between it and your file, and F11 closes it.

:term CMD opens a new tab running CMD instead of a shell, for example :term claude or :term htop.

Terminal tabs are real terminal emulators in a pty: colours, mouse, the alternate screen. Shells, TUIs and AI CLIs run unchanged.

They sit in the same tab bar as your files, and their tab title follows what the program inside sets, like Ghostty.

Key Typed command Does
Shift+F12 :newterm Open another terminal tab
F12 :toggleterm Jump between the current file and your terminal tab
F11 :closeterminal Close the active terminal tab
Alt+T :termdock Show or hide a shell docked along the bottom
Shift+F11 :scrollback The terminal’s history in a tab
Shift+F2 / Shift+F3 :prevprompt / :nextprompt Previous / next shell prompt
Shift+F4 :lastoutput (:scrollback last) Select the last command’s output
Alt+1 … Alt+9 Jump to tab N
Ctrl+PageUp / Ctrl+PageDown :prevtab / :nexttab Previous / next tab

Type the commands from a file tab, after Ctrl+E. Inside a terminal tab, Ctrl+E goes to the shell. For the short names (:newterm, :toggleterm, :nextprompt and so on), see Typed commands.

In a terminal tab every key goes to the program inside, so your shell keeps Ctrl+T, Alt+., Ctrl+R, Ctrl+E and the rest. The exceptions are:

  • Alt+1 … Alt+9
  • Ctrl+PageUp / Ctrl+PageDown
  • F-keys bound to Skink’s own actions: F1 command palette, F8 file tree, F11, F12, the Problems list, the debugger keys, and the Shift+F-keys above.

F-keys bound to editor actions, like F10 (quit) and F2 (save), go to the program. That keeps htop and mc usable.

Because these are ordinary bindings, you can move them in bindings.json. The actions are ToggleTerminal, NewTerminal, CloseTerminal, ToggleTree, ToggleSidebar, PreviousTab and NextTab.

When the program exits, the tab closes on the next key you press.

Command Does
:term New terminal tab with your shell
:term COMMAND... New terminal tab running COMMAND
:run COMMAND... Run in the background in the project root; the output fills a read-only tab when done
:task Run a project task in a terminal tab (see Tasks)

New terminals start in the project root with your $SHELL. On Windows that is pwsh, else Windows PowerShell, else cmd.

The mouse wheel scrolls the scrollback, unless the program tracks the mouse itself (then it gets the wheel). Skink keeps 3000 lines per terminal.

Shift+F11 opens the terminal’s history in a tab where editor keys work:

  • Ctrl+F searches it.
  • Shift+arrows select (a keyboard copy mode), Ctrl+C copies.
  • Enter on a line with file:line[:col] opens that file there.

Ctrl+click a file:line[:col] right in the terminal to open it. Compiler errors, test failures and grep -n output become links.

Jumping between prompts and selecting the last output need a shell that marks its prompts with OSC 133.

fish 4 and later does this out of the box, and so do the shell-integration scripts of Ghostty, WezTerm and VS Code. For bash, add to ~/.bashrc:

Terminal window
PS0='\e]133;C\a'
PROMPT_COMMAND='printf "\e]133;D;$?\a\e]133;A\a"'
PS1="$PS1"'\[\e]133;B\a\]'

With marks, Alt+Shift+E sends exactly the last command’s output to the AI agent. See AI agents.

A terminal can be shown in a split pane next to a file, but only in one pane at a time.

The bottom dock (Alt+T) is the quickest way to keep a shell in view. Press it again to hide the dock; the shell keeps running in its tab. See Splits and docks.

Sessions bring shells back: skink with no arguments in a project reopens its shells in their last folder. The programs that were running in them are not restarted.