linux 工具——终端分屏与vim分屏

开源中国社区最新推荐博客 / 2018-12-27 12:01

preface:不知不觉在终端下学习干活一年多,终端开多了成了习惯,之前嫌麻烦没用分屏,而当真正用起来比想象中的简单,终端下的分屏命令
tmux及vim自带分屏命令vsp都相当不错,加快干活效率。

1、终端分屏tmux
功能:
提供了强劲的、易于使用的命令行界面。
可横向和纵向分割窗口。
窗格可以自由移动和调整大小,或直接利用四个预设布局之一。
支持 UTF-8 编码及 256 色终端。
可在多个缓冲区进行复制和粘贴。
可通过交互式菜单来选择窗口、会话及客户端。
支持跨窗口搜索。
支持自动及手动锁定窗口。

基本使用及快捷键
安装简单:sudo apt-get install tmux
使用只需记住几个常用快捷键。
tmux所有自带命令都默认需要先按Ctrb+b,然后再键入对应的命令。
Ctrl+b原意为send-prefix,即发送前缀信号。以下简写C-b
tmux   # 运行 tmux -2 以256终端运行,exit命令退出
C-b d  # 返回主 shell , tmux 依旧在后台运行,里面的命令也保持运行状态
tmux ls # 显示已有tmux会话(C-b s)
tmux attach-session -t 数字 # 选择tmux
tmux new-session -s session-name
tmux kill-session -t session-name
man tmux//显示
C-b ?  // 显示快捷键帮助,退出按q
C-b  ”  // 模向分隔窗口
C-b % // 纵向分隔窗口
C-b 方向键//在各窗口间切换(注意与下一个命令的区别)
C-b C-方向键 //调整分隔窗口大小,不要松开Ctrl
C-b c//create, 生成一个新的窗口
C-b n//next,移动到下一个窗口
C-b p//previous,移动到前一个窗口
C-b l//last,移动到最后使用的窗口
C-b C-o  //调换窗口位置,当前窗口和上一个窗口互换。
C-b o // 跳到下一个分隔窗口
C-b 0~9 //选择几号窗口
C-b q // 显示分隔窗口的编号
C-b w // 以菜单方式显示及选择窗口
C-b s // 以菜单方式显示和选择会话
C-b t //显示时钟
C-b & // 确认后退出 tmux
C-b ! // 把当前窗口变为新窗口
C-b 空格键  //采用下一个内置布局
C-b [ 复制(空格开始)
C-b ] 粘贴(回车结束)
C-b , 给当前窗口改名

 
Figure 1-1: tmux分屏帮助页(C-b ?)

配置:
配置文件位于:~/.tmux.conf,没有可以自己建一个。配置文件内容基本就是tmux命令列表。
可避免与终端快捷键冲突改动一些内容,如下:
 #– base –#
set -g default-terminal “screen”
set -g display-time 3000
set -g history-limit 65535
#———————————————-
#将默认按键前缀改为与C-i避免与终端快捷键冲突
set-option -g prefix C-i
unbind-key C-b
bind-key C-i send-prefix
#———————————————-
#按键绑定
#水平或垂直分割窗口 (C+A+ :split-window + v/h)
unbind ‘”‘
bind – splitw -v #分割成上下两个窗口
unbind %
bind | splitw -h #分割成左右两个窗口
#———————————————-
#选择分割的窗格
bind k selectp -U #选择上窗格
bind j selectp -D #选择下窗格
bind h selectp -L #选择左窗格
bind l selectp -R #选择右窗格
#———————————————-
#重新调整窗格的大小
bind ^k resizep -U 10
bind ^j resizep -D 10
bind ^h resizep -L 10
bind ^l resizep -R 10
#———————————————-
#交换两个窗格
bind ^u swapp -U
bind ^d swapp -D
bind ^a last
bind q killp
#———————————————-
bind ‘~’ splitw htop
bind ! splitw ncmpcpp
bind m command-prompt “splitw -h ‘exec man %%'”
unbind s
#———————————————-
#定制状态行
set -g status-left “#[fg=white,bg=blue] > #I < #[default] |” # 0:bash
#set -g status-left “#[fg=white,bg=blue] > #I < #[default] |” # session-name
set -g status-right “#[fg=yellow,bright][ #[fg=cyan]#W #[fg=yellow]]#[default] #[fg=yellow,bright]- %Y.%m.%d #[fg=green]%H:%M #[default]”
set -g status-right-attr bright
set -g status-bg black
set -g status-fg white
set -g set-clipboard on
setw -g window-status-current-attr bright
#setw -g window-status-current-bg red
setw -g window-status-current-bg green
setw -g window-status-current-fg white
set -g status-utf8 on
set -g status-interval 1
#set -g visual-activity on
#setw -g monitor-activity on
set -g status-keys vi
#———————————————-
setw -g mode-keys vi
setw -g mode-mouse on
#setw -g mouse-resize-pane on
#setw -g mouse-select-pane on
#setw -g mouse-select-window on
# move x clipboard into tmux paste buffer
bind C-p run “tmux set-buffer “$(xclip -o -sel clipbaord)”; tmux paste-buffer”
# move tmux copy buffer into x clipboard
bind C-y run “tmux show-buffer | xclip -i -sel clipbaord”
#默认启动应用
#new -s work # 新建名为 work 的会话,并启动 mutt
#neww rtorrent # 启动 rtorrent
#neww vim # 启动 vim
#neww zsh
#selectw -t 3 # 默认选择标号为 3 的窗口

自定义tmux窗口布局

启动tmux时,可以按照自己已定义的方式自动开启多个tmux分屏窗口
例:创建一个脚本文件
gedit ~/.tmux/mylayout

selectp -t 0    #选中第0个窗格
splitw -h -p 50  #将其分成左右两个
selectp -t 1     #选中第一个,也就是右边那个
splitw -v -p 50  #将其分成上下两个,这样就变成了图中的布局了
selectp -t 0     #选回第一个
在.tmux.conf 后面加上一句
bind D source-file ~/.tmux/mylayout  

这样每次进入tmux后,键入 Ctrl + b D (D是大写,要按shrift,你也可以按成其他字符,只要跟tmux已经用的不冲突即可),即会自动执行mylayout脚本,生成图示布局。如果 .tmux.conf 文件不存在的话,请自己生成。注意前面有个.(点)

另外还有一些小功能,通过在.tmux.conf中添加相应的命令打开对应的功能即可:

鼠标可以选中窗格  set-option -g mouse-select-pane on
鼠标滚轮可以用    set-window-option -g mode-mouse on

卤煮创建脚本时,发现无.tmux文件夹,也无~/.tmux.conf文件,没有尝试,不过对于平常使用似乎没有conf也能正常使用
 
Figure 1-2: tmux分屏效果

参考:
项目主页:http://tmux.github.io/
ubuntu下tmux用法:http://blog.csdn.net/jideljd_2010/article/details/27093725
tmux简单教程:http://blog.csdn.net/jianbinhe1012/article/details/7741727
tmux安装、使用、配置:http://blog.chinaunix.net/uid-26495963-id-3140087.html

2、vim分屏技巧
主要是sp和vsp两个命令,在终端输入时主要是-O和-o两个参数,可能因为之前卤煮的vim装了python插件,使用分屏快捷键时不太方便,没有想象中的方便,可能还没发现vim分屏的强大吧。

分屏启动Vim
vim -On file1 file2 …使用大写的O参数来垂直分屏。
vim -on file1 file2 …使用小写的o参数来水平分屏。
注释: n是数字,表示分成几个屏。

关闭分屏 
Ctrl+W c//关闭当前窗口。
Ctrl+W q//关闭当前窗口,如果只剩最后一个了,则退出Vim。

分屏
Ctrl+W s//上下分割当前打开的文件。
:sp filename//上下分割,并打开一个新的文件。
Ctrl+W v//左右分割当前打开的文件。 
:vsp filename//左右分割,并打开一个新的文件。

移动光标
Vi中的光标键是h, j, k, l,要在各个屏间切换,只需要先按一下Ctrl+W
Ctrl+W l//把光标移到右边的屏。
Ctrl+W h//把光标移到左边的屏中。
Ctrl+W k//把光标移到上边的屏中。
Ctrl+W j//把光标移到下边的屏中。
Ctrl+W w//把光标移到下一个的屏中。.

移动分屏
这个功能还是使用了Vim的光标键,只不过都是大写。当然了,如果你的分屏很乱很复杂的话,这个功能可能会出现一些非常奇怪的症状。
Ctrl+W L//向右移动。
Ctrl+W H//向左移动 
Ctrl+W K//向上移动 
Ctrl+W J//向下移动 

屏幕尺寸
下面是改变尺寸的一些操作,主要是高度,对于宽度你可以使用Ctrl+W <或是>,但这可能需要最新的版本才支持。
Ctrl+W =//让所有的屏都有一样的高度。
Ctrl+W +//增加高度。
Ctrl+W -//减少高度。
 
Figure 2-1:vim分屏效果
参考:
vim的分屏功能:http://www.cnblogs.com/wanyao/archive/2011/05/31/2064857.html
百度经验Vim的分屏技巧的使用:http://jingyan.baidu.com/article/7908e85c70b25baf481ad296.html
vim入门基础:http://www.jianshu.com/p/bcbe916f97e1

转载请认证:http://blog.csdn.net/u010454729/article/details/49496381

Shared via Inoreader