tmux和vim两个工具
操作需要足够熟练
可以直接在Terminal进行coding
tmux比screen强太多
tmux
功能(作用):
- 分屏
- 允许断开Terminal连接后,继续运行进程
结构:
一个tmux可以包含多个session,一个session可包含多个window,一个window可以包含多个pane。每个pane是个最小单位,每个pane会打开一个Shell对话框
tmux操作:
ctrl + a
是yxc修改后的prefix
,默认的前缀是ctrl + b
-
tmux
:新建一个session,其中包含一个window,window包含一个pane,pane里打开一个shell对话框 -
按下
ctrl + a
后手指松开,然后按%
,将当前pane左右平分为2个pane -
按下
ctrl + a
后手指松开,然后按"
,将当前pane上下平分为2个pane -
ctrl + d
:关闭当前pane,若当前window的所有pane均已关闭,则自动关闭window;若当前session的所有window均已关闭,则自动关闭session -
鼠标点击可以选pane
-
按下
ctrl + a
后手指松开,然后按方向键,可以选择相邻的pane -
鼠标拖动pane之间的分割线,可以调整分割线的位置
-
按住
ctrl + a
,同时按方向键,可以调整分割线的位置 -
按下
ctrl + a
后手指松开,然后按z
,将当前pane全屏/取消全屏 -
按下
ctrl + a
后手指松开,然后按d
,挂起当前session -
tmux a
打开之前挂起的session -
按下
ctrl + a
后手指松开,然后按s
,选择其他session- 方向键
↑
;选择上一项 session/window/pane - 方向键
↓
;选择下一项 session/window/pane - 方向键
→
;展开当前项 session/window - 方向键
←
:闭合当前项 session/window
- 方向键
-
按下
ctrl + a
后手指松开,然后按c
,在当前session中创建一个新的window -
按下
ctrl + a
后手指松开,然后按w
,选择其他window;操作方法与12完全相同 -
按下
ctrl + a
后手指松开,然后按PageUp
,翻阅当前pane内的内容 -
鼠标滚轮:翻阅当前pane内的内容
-
在tmux中选中文本时,需要按住
shift
键(仅支持windows和linux,不支持mac) -
tmux中复制/粘贴文本的通用方式
- 按下
ctrl + a
后松开手指,然后按[
- 用鼠标选中文本,被选中的文本会被自动复制到tmux的剪贴板
- 按下
ctrl + a
后松开手指,然后按]
,会将剪贴板中的内容粘贴到光标处
也可以按住
Shift
,然后用鼠标选中文本,然后用Ctrl + Insert
进行复制,可以复制到电脑本机的剪切板上 - 按下
小结:
tmux -V
查看tmux的版本
tmux
创建一个session,其中包含一个window,window中包含一个pane,pane里打开一个shell对话框
tmux new -s <session_name>
创建一个session,并为其命名
tmux ls
显式所有的tmux
会话列表
tmux a
连接上一个会话(a for attach
)
tmux a -t <session_name>
连接指定名称 的会话
tmux rename -t s1 s2
将会话s1重命名为s2
tmux kill-session
关闭上次打开的会话
tmux kill-session -t s1
关闭会话s1
tmux kill-session -a -t s1
关闭除了s1之外的所有会话
tmux kill-server
关闭所有会话
进入tmux窗口后,按下快捷键后进行操作,默认快捷键是Ctrl + b
,下文用prefix
代替(注意prefix a
中间有个空格,表示的意思是,先按下prefix
,再按a
;如果需要同时按下,则会用prefix + a
来表示)
prefix s
列出所有会话,可以用方向键进行会话切换
prefix $
重命名会话
prefix d
分离当前会话(d for detach
)
prefix c
创建一个新的窗口
prefix ,
重命名当前窗口
prefix w
列出当前会话的所有窗口,可以进行切换
prefix n
进行下一个窗口(n for next
)
prefix p
进行上一个窗口(p for previous
)
prefix 0~9
切换到编号为0~9对应的窗口
prefix .
修改当前窗口的索引编号
prefix '
随后输入数字,切换到指定编号的窗口(可大于9)
prefix &
关闭当前window
prefix %
左右分屏
prefix "
上下分屏
prefix 方向键
切换pane
prefix q
显示pane的编号
prefix o
顺时针切换pane(切换光标到其他的pane)
prefix+o
将不同的pane进行切换(将pane1换到pane2的位置)
prefix x
关闭当前pane
ctrl d
关闭当前pane
prefix <space>
重新排列当前window下的所有pane
prefix !
将当前pane放置到一个新的window中
prefix t
在当前pane中显示时间
prefix z
将当前pane全屏/取消全屏
不使用鼠标的,在tmux中复制粘贴文本的方式:
-
prefix [
进入文本复制模式 -
Ctrl + Space
指定文本复制的起始位置用方向键选择要复制的文本
-
Alt + w
将文本保存到tmux的buffer中 -
prefix ]
将文本粘贴到某个地方
通常,由于ctrl
和b
在键盘上相隔较远,我们会设置prefix
为ctrl + a
。通过在用户的home
目录新建一个.tmux.conf
文件来进行个性化配置。
使用vim打开一个文件
vim ~/.tmux.conf
输入如下内容
# Send prefix
set-option -g prefix C-a
unbind-key C-a
bind-key C-a send-prefix
即可将prefix
替换成Ctrl + a
vim
功能
- 命令行模式下的文本编辑器
- 会根据文件的扩展名来自动判断编程语言。支持代码缩进,代码高亮等
- 使用方式:
vim filename
- 如果已有该文件,则打开它
- 如果没有该文件,则打开一个新的文件
模式
-
一般命令模式(默认)
可以按不同字符,即可进行不同操作。可以复制,粘贴,删除文本等。
-
编辑模式
在一般命令模式后,按下
i
,会进入编辑器模式按下
Esc
会退出编辑模式,返回到一般命令模式 -
命令行模式
在一般命令模式下,输入
:/?
三个字符的任意一个,会进入命令行模式。命令行在最下面。可以查找,替换,报仇呢,退出,配置等。
比如
:set nu
开启行号,:set nonu
关闭行号:q
退出,:q!
强制退出:wq
保存并退出:qa
撤销所有修改, 并退出
操作:
-
i
进入编辑器模式 -
Esc
进入一般命令模式 -
hjkl
上下左右 -
0
或者Home
移动光标到本行开头(^
移动光标到本行第一个非空字符的位置) -
$
或者End
移动光标到本行结尾 -
G
光标移动到最后一行 -
nG
或者:n
光标移动到第n
行 -
n<Space>
n表示数字。按下数字再按空格,光标会向右移动这一行的n个字符 -
n<Enter>
n表示数字,按下数字再按回车,表示向下移动n行 -
gg
光标移动到第一行,相当于1G
-
/word
在光标处向下寻找第一个值为word
的字符串 -
?word
在光标处向上寻找第一个值为word
的字符串 -
n
重复前一个查找操作 -
N
反向重复前一个查找操作 -
:n1,n2s/word1/word2/g
其中n1和n2为数字,在第n1行与n2行之间寻找word1这个字符串,并将该字符串替换为word2 -
:1,$s/word1/word2/g
将全文的word1替换为word2 -
:1,$s/word1/word2/gc
将全文的word1替换为word2,并在替换时要求用户确认 -
v
开始选中文本(按两下Esc
取消选中) -
d
剪切选中文本(可以用来做删除) -
y
复制选中的文本 -
dd
剪切当前行(可以用来做删除) -
yy
复制当前行 -
p
将复制的文本,在光标的下一个位置进行粘贴 -
u
撤销上一次操作 -
ctrl + r
取消撤销 -
>
将选中的文本整体向右移动(向右缩进) -
<
(向左缩进) -
:w
保存 -
:w!
强制保存 -
:wq
保存并退出 -
:q
退出 -
:q!
强制退出(不保存修改的部分) -
:set nu
显示行号 -
:set nonu
隐藏行号(在复制文本时,需要将行号关闭,否则复制出来带有行号) -
:noh
取消高亮(比如用/?
开启查找后,会高亮出匹配的字符串,若要取消高亮,用此命令) -
gg=G
将全文代码格式化 -
:set paste
开启粘贴模式,此时复制代码不会添加自动缩进 -
:set nopaste
关闭粘贴模式,此时会开启代码自动缩进(遇到换行符会在下一行开头自动补全缩进) -
Ctrl + q
当vim卡死时,可以取消当前正在执行的命令
删掉所有的内容
- 先
gg
跳到第一行 - 按下
d
,表示我要准备剪切(删除)了(开始删除模式) - 按下
G
,表示从当前位置删到最后一行
ggdG
比如删掉前5行
- 先
gg
跳到第一行 - 按下
d
,表示我要准备删了 - 按下
5G
,表示从当前位置删到第5行
ggd5G
异常处理:
每次用vim编辑一个文件时,会自动创建一个.filename.swp
的临时文件。
如果打开某个文件时,该文件的swp文件已村在,则会报错。此时可以按如下方式进行解决:
- 找到正在打开该文件的程序,杀掉
- 直接删掉该文件的swp文件
用vim时,推荐在tmux中用。这样当发生任何意外情况时,编辑的内容不会丢失