China FreeBSD

虚拟终端及终端工具

  • 贡献者:HHJ
  • 阅读:1964
  • 类别:脚本工具
  • 更新时间:2017-10-09 11:31:06


xterm

XTerm是X Window System上的默认终端模拟器,用来提供多个独立的SHELL输入输出,其配置文件为~/.Xdefaults 或 ~/.Xresources,需手动创建。但xterm中文支持没urxvt好,urxvt可以输入中文。

!look and feel
!外观重点的是下面第一行
xterm.termName: xterm-256color

xterm.locale:true
xterm.utf8: true
xterm*utf8Title:true
xterm*fontMenu*fontdefault*Label:Default

!字体设置
xterm*faceName:DejaVu Sans Mono:antialias=true:pixelsize=16:bold
xterm*faceNameDoublesize:WenQuanYi:pixelsize=16:antialias=true
xterm*xftAntialias:true
xterm*cjkWidth:false

!背景色及字体顔色
xterm*background:black
xterm*foreground:gray
xterm.borderLess: true
xterm.cursorBlink: true
xterm*colorUL: yellow
xterm*colorBD: white

!窗口大小及位置
xterm*geometry:80x28+200+100

! scrollbar  
xterm*scrollBar: false
xterm*rightScrollBar: true
XTerm*SaveLines: 4096  

xterm*loginshell: true
xterm*cursorBlink: true

!-- Tango color scheme Tango配色方案
*xterm*color0: #2e3436
*xterm*color1: #cc0000
*xterm*color2: #4e9a06
*xterm*color3: #c4a000
*xterm*color4: #3465a4
*xterm*color5: #75507b
*xterm*color6: #0b939b
*xterm*color7: #d3d7cf
*xterm*color8: #555753
*xterm*color9: #ef2929
*xterm*color10: #8ae234
*xterm*color11: #fce94f
*xterm*color12: #729fcf
*xterm*color13: #ad7fa8
*xterm*color14: #00f5e9
*xterm*color15: #eeeeec

!fix alt key input 修正Alt不能正常使用
xterm*eightBitInput: false
xterm*altSendsEscape: true

!input method  好像不起作用
XTerm*inputMethod:fcitx  
  
!print color and bold/underline attributes
xterm*printAttributes: 2
xterm*printerCommand: cat > ~/xtermdump

!mouse selecting to copy, ctrl-v to paste 快捷键定义:鼠标选择自动复制,ctrl-v粘贴,ctrl-p拷屏。
!Ctrl p to print screen content to file
XTerm*VT100.Translations: #override
    Ctrl <KeyPress> V: insert-selection(CLIPBOARD,PRIMARY,CUT_BUFFER0)
    <BtnUp>: select-end(CLIPBOARD,PRIMARY,CUT_BUFFER0)
    Ctrl <KeyPress> P: print()


启用配置,在终端中运行

 $ xrdb ~/.Xdefault 或 ~/.Xresources 或
 $ xrdb -load ~/.Xdefault
 $ xrdb -merge ~/.Xdefault

sakura

sakura是一个超轻量级虚拟终端,可全屏,可粘贴复制,打开时可同时执行命令,且中文支持好。默认快捷键:

Ctrl + Shift + T                     新增终端窗口
Ctrl + Shift + W                     关闭当前终端窗口
Ctrl + Shift + C                     copy
Ctrl + Shift + V                     粘贴
Alt  + Left cursor                   前一个终端窗口
Alt  + Right cursor                  后一个终端窗口
Alt  + [1-9]                         切换到哪个窗口
Ctrl + Shift + S                     切换滚动
Ctrl + Shift + Mouse left button     打开链接
F11                                  全屏
Ctrl + '+'                           增加字体大小
Ctrl + '-'                           减少字体大小

查看说明

 man sakura

全屏打开,同时执行tmux命令

 sakura -s -e tmux

Terminator

Terminator是这些终端里面功能最完备的一款,是终端模拟器中的劳斯莱斯。他是CrunchBang的默认终端,该终端基于 GNOME terminal。

特点:重量级、可分屏、可全屏、中文支持好、透明背景、插件、值得一提的是"Run a custom command",该功能可以使Terminator启动时就运行一些命令,并且可以设置命令退出时Terminator也同时关闭,应有尽有,就是消耗的资源比较多,这就是付出的代价。

快捷键

CTRL+SHIFT+O/E 水平或者垂直新建一个窗口 
CTRL+SHIFT + LEFT/RIGHT/UP/DOWN 左/右/上/下移动当前窗口 
CTRL+SHIFT+s 显示/隐藏 scrollbar 
CTRL+TAB/CTRL+SHIFT+TAB 移动到下/上一窗口 
ALT+ LEFT/RIGHT/UP/DOWN 分别移动到当前窗口的左/右/上/下窗口 
CTRL+SHIFT+W 关闭当前窗口 
CTRL+SHIFT+Q 关闭当前程序 
CTRL+SHIFT+X/Z 在所有窗口与当前窗口(最大化)之间进行切换 
CTRL+SHIFT+T 创建新的Tab 
CTRL+PageDown/PageUp 移动到下/上一Tab 
CTRL+SHIFT+PageDown/PageUp 当前Tab与上/下一Tab交换前后位置 
CTRL+Plus(+)/Minus(-) 增加/减少当前窗口的字号 
CTRL+Zero(0) 还原成默认的字号 
CTRL+SHIFT+G 清屏 
F11 全屏/或者在启动程序的时候参数设置为 -f

配置文件:~/.config/terminator/config


Linux Terminal/Terminator的设置,配色、字体和layout 2013-01-13 lchjczw - 修订历史History:

 2011.03.11   添加作者status和layout配置
 2011.03.08   增加layout的说明
 2010.09.15   记录

- 系统: Ubuntu 10.04LTS - 软件: Vmware player 3.1.1 - Terminator 0.95 - Gnome terminal 2.29.6 - Fixedsys Excelsior 3.01 字体

在Centos和ubuntu下,terminal的蓝色都难以分辨,其时你可以在调整窗口菜单的调色板,选择自己喜欢的颜色。 在terminator下(即多窗口那个),可以设置 preferences -> profiles -> Colors 这两个终端都可以直接使用系统原来就有的配色方案。 1. 我的方案则喜欢在预定的“Linux style”基础上做出微调,变成自定义的: text color为 白色 background color为 #270C1F 2. 调色板(palette)中,主要调整是原来蓝湛湛的目录颜色,我把它改为没这么蓝的淡蓝色 5555FF 3. background中,我喜欢设置为 90%的transparent background,即90%的透明色 4. 字体,终端的字体我一般喜欢用windows下的fixsys的格式,因为它等宽,和中文放在一起好看。系统预设monospace也不错,不过如果可以选择,我还是会选择用Fixsys。Linux下似乎没有fixsys。不过,有free版本的Fixedsys字体,那应该是参考了fixsys字体制作出来的了,呵呵,功德无量阿。在下面的网址下载,下载后放到/usr/share/fonts/truetype/freefont目录: http://www.fixedsysexcelsior.com/ 直接下载地址是:http://www.fixedsysexcelsior.com/fonts/FSEX300.ttf 我喜欢设置为fixedsys 11号字体 5. terminator常被我用作VIM的编辑器,因此我需要做成大窗口启动,以方便接下来的多窗口分割。 因此我在Terminator的luncher上加入启动参数: --geometry=580x700+400+0 也可以加上默认打开的工作目录 --working-directory=/home/cobyeah 6. Terminator的配置文件在~/.config/terminator/config 可以在此配置文件中设置layout栏参数。使用这个自定义layout时,terminator会同时打开多个子窗口。 但现在[0.95版]功能仍然没完善,不能在layout配置中设置每个窗口的初始化大小,只能是fixed的大小。 作者解释说他正在working on it。将会在1.0beta版中发布这个功能。并且格式参数有可能不同。 一个拥有两水平窗口的terminator配置如下:

myLayout
  [[[window0]]]
    position = 170:0
    type = Window
    order = 0
    parent = ""
    size = 1060, 700
  [[[child1]]]
    type = HPaned
    order = 0
    parent = window0
  [[[terminal_left]]]
    profile = default
    type = Terminal
    order = 0
    parent = child1
  [[[terminal2_right]]]
    profile = default
    type = Terminal
    order = 1
    parent = child1

运行时,加参数 -l myLayout

终端字体

  1. Terminal
  2. DejaVu Sans Mono

  3. 苹果的Monaco等宽字体作为终端默认字体, 中文字体推荐使用文泉驿微米黑, 可避免中文显示出现锯齿.
  4. fixsys.ttf等宽字体,和中文放在一起好看,下载地址:http://www.fixedsysexcelsior.com/fonts/FSEX300.ttf


终端复用工具tmux

中文教程 速成教程

tmux是一个优秀的终端复用软件,类似GNU Screen,但来自于OpenBSD,采用BSD授权。可分屏,可恢复会话。

在虚拟终端中显示中文

若让tmux显示中文,需要UTF-8 locale (LC_CTYPE)设置

 vi ~/.xinitrc
 export LC_CTYPE=zh_CN.UTF-8

tmux的基本概念或单元模块

tmux使用C/S模型构建,主要包括以下单元模块:

模块名称 说明
server 服务器。输入tmux命令时就开启了一个服务器。
session 会话。一个服务器可以包含多个会话。
window 窗口。一个会话可以包含多个窗口。
panel 面板。一个窗口可以包含多个面板。

基本操作

 tmux new session -s basic     # 开启会话
 tmux new -s windows -n shell  # 开启一个名为windows的会话,同时将窗口命名为shell
 tmux ls                       # 显示会话
 tmux attach                   # 恢复最近的一个会话
 tmux attach-session -t basic  # 恢复指定的一个会话

系统操作

 ?             列出所有快捷键;按q返回
 d             脱离当前会话;这样可以暂时返回Shell界面,输入tmux attach能够重新进入之前的会话
 D             选择要脱离的会话;在同时开启了多个会话时使用
 Ctrl+z        挂起当前会话
 r             强制重绘未脱离的会话
 s             选择并切换会话;在同时开启了多个会话时使用
 :             进入命令行模式;此时可以输入支持的命令,例如kill-server可以关闭服务器
 [             进入复制模式;此时的操作与vi/emacs相同,按q/Esc退出
 ~             列出提示信息缓存;其中包含了之前tmux返回的各种提示信息

窗口操作

 c             创建新窗口
 &             关闭当前窗口
 数字键        切换至指定窗口
 p             切换至上一窗口
 n             切换至下一窗口
 l             在前后两个窗口间互相切换
 w             通过窗口列表切换窗口
 ,             重命名当前窗口;这样便于识别
 .             修改当前窗口编号;相当于窗口重新排序
 f             在所有窗口中查找指定文本

面板操作

  "             将当前面板平分为上下两块
  %             将当前面板平分为左右两块
  x             关闭当前面板
  !             将当前面板置于新窗口;即新建一个窗口,其中仅包含当前面板
  Ctrl+方向键   以1个单元格为单位移动边缘以调整当前面板大小
  Alt+方向键    以5个单元格为单位移动边缘以调整当前面板大小
  Space         在预置的面板布局中循环切换;依次包括even-horizontal、even-vertical、main-horizontal、main-vertical、tiled
  q             显示面板编号
  o             在当前窗口中选择下一面板
  方向键        移动光标以选择面板
  {             向前置换当前面板
  }             向后置换当前面板
  Alt+o         逆时针旋转当前窗口的面板
  Ctrl+o        顺时针旋转当前窗口的面板

在终端中复制字符串

 1.PREFIX 按 [ 进入 tmux屏幕拷贝模式
 2.按空格键开始复制
 3.使用类似vim的上下左右键方式进行选中
 4.按enter退出复制模式
 5.PREFIX 按 ]进行粘贴

配置

tmux的系统级配置文件为/etc/tmux.conf,用户级配置文件为~/.tmux.conf。配置文件实际上就是tmux的命令集合,也就是说每行配置均可在进入命令行模式后输入生效。退出所有session后再重新进入才生效。下面是一个~/.tmux.conf的示例。

set -g prefix C-a               # 把前缀键从 C-b 更改为 C-a
unbind C-b                      # 释放之前的 Ctrl-b 前缀快捷键
bind C-a send-prefix            # 确保可以向其它程序发送 Ctrl-A
set -sg escape-time 2           # 设定前缀键和命令键之间的延时
# setw -g pane-base-index 1     # 把面板的初始索引值从 0 改为 1
set -g status-interval 60       # 每 60 秒更新一次状态栏
# set -g status-justify centre    # 设置窗口列表居中显示
setw -g mode-keys vi            # 开启 vi 按键
set -g default-terminal "screen-256color"  # 设置默认的终端模式为 256 色模式
bind r source-file ~/.tmux.conf \; display "Reloaded!"    # 使用 Prefix r 重新加载配置文件

# 此类配置可以在命令行模式中输入show-options -g查询
# set-option -g base-index 1        # 窗口的初始序号;默认为0,这里设置为1
set-option -g display-time 5000     # 提示信息的持续时间;设置足够的时间以避免看不清提示,单位为毫秒
set-option -g repeat-time 1000      # 控制台激活后的持续时间;设置合适的时间以避免每次操作都要先激活控制台,单位为毫秒
set-option -g status-keys vi        # 操作状态栏时的默认键盘布局;可以设置为vi或emacs

# 窗口切分快捷键
bind \ split-window -h              # 使用 \ 将窗口竖切
bind - split-window -v              # 使用 - 将窗口横切
bind '"' choose-window              # 双引号选择窗口
bind K confirm-before -p "kill-window #W? (y/n)" kill-window    # 使用大写 K 来关闭窗口

# Pane之间切换键
bind h select-pane -L         # 定位到左边窗口的快捷键
bind j select-pane -D         # 定位到上边窗口的快捷键
bind k select-pane -U         # 定位到下方窗口的快捷键
bind l select-pane -R         # 定位到右边窗口的快捷键

# 快速选择面板
bind -r C-h select-window -t :-
bind -r C-l select-window -t :+

# 调整面板大小
bind -r H resize-pane -L 5
bind -r J resize-pane -D 5
bind -r K resize-pane -U 5
bind -r L resize-pane -R 5

# 开启活动通知
setw -g monitor-activity on
set -g visual-activity on


# 设置面板和活动面板的颜色
set -g pane-border-fg green
set -g pane-border-bg black
set -g pane-active-border-fg white
set -g pane-active-border-bg yellow

# 设置窗口列表的颜色
setw -g window-status-fg cyan
setw -g window-status-bg default
setw -g window-status-attr dim     #或setw -g window-status-attr bright

# 设置活动窗口的颜色
setw -g window-status-current-fg white
setw -g window-status-current-bg red
setw -g window-status-current-attr bright

# 设置window属性
set-option -g window-status-format '#I #W'
set-option -g window-status-current-format ' #I #W '

# 设置命令行或消息的颜色
set -g message-fg white
set -g message-bg black
set -g message-attr bright

# 设置状态栏的颜色
# set -g status-fg white
# set -g status-bg blue

# 设置状态栏左侧的内容和颜色
# set-option -g status-left-fg green
# set-option -g status-left-bg blue
# set -g status-left-length 40               # 状态栏左方的内容长度;
# 状态栏左方的内容
# set -g status-left "#[fg=green]Session: #S #[fg=yellow]#I #[fg=cyan]#P"  
# set -g status-left '[#(whoami)]'

# 设置状态栏右侧的内容和颜色
# set-option -g status-right-fg green
# set-option -g status-right-bg blue
# 15% | 28 Nov 18:15
# set -g status-right-length 15       # 状态栏右方的内容长度;建议把更多的空间留给状态栏左方
# 状态栏右方的内容;这里的设置将得到类似23:59的显示
# set -g status-right "#(~/battery Discharging) | #[fg=cyan]%d %b %R"
# set -g status-right '[#(date +" %m-%d %H:%M ")]'

# 在相同目录下使用 tmux-panes 脚本开启面板
unbind v
unbind n
bind v send-keys " ~/tmux-panes -h" C-m
bind n send-keys " ~/tmux-panes -v" C-m

# 临时最大化面板或恢复面板大小
unbind Up
bind Up new-window -d -n tmp \; swap-pane -s tmp.1 \; select-window -t tmp
unbind Down
bind Down last-window \; swap-pane -s tmp.1 \; kill-window -t tmp

# 把日志输出到指定文件
bind P pipe-pane -o "cat >>~/#W.log" \; display "Toggled logging to ~/#W.log"

# 此类设置可以在命令行模式中输入show-window-options -g查询

# 不使用prefix键,使用Ctrl和左右方向键方便切换窗口
bind-key -n "C-Left" select-window -t :-
bind-key -n "C-Right" select-window -t :+

# 如果安装了 powerline,那么在最后一行加上下面的语句:
# source '/usr/lib/python2.7/site-packages/powerline/bindings/tmux/powerline.conf'


系统启动进入tmux

修改 ~/.bashrc 文件,在文件最后加上下面的内容:

tmux_init()
{
    tmux new-session -s "kumu" -d -n "local"    # 开启一个会话
    tmux new-window -n "other"                  # 开启一个窗口
    tmux split-window -h                        # 开启一个竖屏
    tmux split-window -v "top"                  # 开启一个横屏,并执行top命令
    tmux -2 attach-session -d                   # tmux -2强制启用256color,连接已开启的tmux
}

# 判断是否已有开启的tmux会话,没有则开启
if which tmux 2>&1 >/dev/null; then
    test -z "$TMUX" && (tmux attach || tmux_init)
fi