Vim
功能
- 命令行文本编辑器:Vim 是一个强大的命令行文本编辑器,适用于多种操作系统。
- 自动识别编程语言:根据文件扩展名自动识别编程语言,支持代码高亮、自动缩进等功能。
- 使用方式:
- 命令:
vim filename - 如果文件存在,则打开该文件;如果文件不存在,则创建一个新文件并命名为
filename。
模式
Vim 包含三种主要模式:
- 一般命令模式(默认模式):
- 用于执行复制、粘贴、删除等操作。
- 通过键盘输入特定命令实现不同功能。
- 编辑模式:
- 按
i从一般命令模式进入编辑模式,可输入文本。 - 按
ESC退出编辑模式,返回一般命令模式。
- 命令行模式:
- 在一般命令模式下按
:,/, 或?进入。 - 显示在屏幕底部,用于查找、替换、保存、退出或配置编辑器。
操作
以下为常用操作命令,均在 一般命令模式 下执行,除非特别说明:
光标移动
h或 左箭头:光标左移一个字符。j或 下箭头:光标下移一行。k或 上箭头:光标上移一行。l或 右箭头:光标右移一个字符。n<Space>:光标右移 n 个字符(n 为数字)。0或 Home 键:光标移至本行开头。$或 End 键:光标移至本行末尾。G:光标移至文件最后一行。:n或nG:光标移至第 n 行(n 为数字)。gg:光标移至文件第一行(等同于1G)。n<Enter>:光标下移 n 行(n 为数字)。
查找
/word:向下查找第一个匹配word的字符串。?word:向上查找第一个匹配word的字符串。n:重复上一次查找(同方向)。N:反向重复上一次查找。:noh:关闭查找关键词高亮。
替换
:n1,n2s/word1/word2/g:在第 n1 行到第 n2 行间,将word1替换为word2。:1,$s/word1/word2/g:全文将word1替换为word2。:1,$s/word1/word2/gc:全文替换word1为word2,替换前逐一确认。
编辑
i:进入编辑模式(在光标前插入)。ESC:退出编辑模式,返回一般命令模式。v:进入可视模式,选择文本。d:删除选中文本。dd:删除当前行。y:复制选中文本。yy:复制当前行。p:粘贴复制的内容到光标后/下一行。u:撤销上一步操作。Ctrl + r:恢复撤销的操作。>:选中文本右缩进一次。<:选中文本左缩进一次。gg=G:格式化全文代码(自动调整缩进)。
保存与退出
:w:保存文件。:w!:强制保存文件。:q:退出 Vim。:q!:强制退出,不保存更改。:wq:保存并退出。
配置
:set paste:进入粘贴模式,禁用自动缩进,便于粘贴代码。:set nopaste:取消粘贴模式,恢复自动缩进。:set nu:显示行号。:set nonu:隐藏行号。
其他
Ctrl + q:当 Vim 卡死时,取消当前执行的命令。
异常处理
- .swp 文件问题:
- 每次编辑文件时,Vim 会生成一个
.filename.swp临时文件。 - 若打开文件时提示
.swp文件已存在,说明文件可能正在被其他 Vim 实例编辑。 - 解决方法:
- 找到正在编辑该文件的 Vim 进程并关闭。
- 直接删除
.filename.swp文件(确保无其他进程编辑该文件)。
- 注意事项:删除
.swp文件前,确认没有其他 Vim 实例正在编辑,避免丢失未保存的更改。
注意事项
- 区分大小写:Vim 命令对大小写敏感,如
G和g功能不同。 - 多键组合:部分命令需连续输入(如
dd,yy),确保快速准确输入。 - 保存习惯:编辑完成后,养成使用
:w保存的习惯,避免意外退出丢失更改。 - 学习曲线:Vim 操作需练习,建议初学者使用
vimtutor(命令行输入vimtutor)学习基础操作。 - 配置文件:可通过编辑
~/.vimrc自定义 Vim 设置,如默认显示行号、设置主题等。
Nano
模式
Nano 的操作较为直观,没有 Vim 那样的复杂模式切换,主要在单一模式下操作:
- 默认编辑模式:启动 Nano 后直接进入编辑模式,可立即输入或编辑文本。
- 命令模式:通过快捷键(如
Ctrl组合键)执行保存、退出、查找等操作,快捷键提示显示在屏幕底部。
操作
Nano 的操作主要通过 Ctrl 或 Alt 组合键完成,常用命令如下(^ 表示 Ctrl 键,M- 表示 Alt 键):
光标移动
^F或 右箭头:光标右移一个字符。^B或 左箭头:光标左移一个字符。^N或 下箭头:光标下移一行。^P或 上箭头:光标上移一行。^A:光标移至本行开头。^E:光标移至本行末尾。M-G:跳转到指定行(输入行号后回车)。^Y:向上翻页。^V:向下翻页。
查找
^W:查找字符串(输入字符串后回车)。M-W:重复上一次查找(向下)。^W后按^R:反向查找(向上)。^T(部分版本):在查找时启用正则表达式。
替换
^W后按M-R:进入替换模式,输入要替换的字符串和新字符串。- 替换时可选择逐一确认或全部替换。
编辑
- 直接输入:Nano 默认处于编辑模式,可直接输入文本。
^D:删除光标所在位置的字符。^K:剪切当前行(删除整行)。^U:粘贴剪切的行到光标位置。M-U:撤销上一步操作。M-E:恢复撤销的操作。^J:格式化当前段落(调整文本对齐,适用于文本文件)。M-}:增加缩进(选中文本后)。M-{:减少缩进(选中文本后)。
保存与退出
^O:保存文件。^X:退出 Nano(若文件有更改,会提示是否保存)。M-D:强制保存(覆盖已有文件,部分版本支持)。
配置
M-N:显示/隐藏行号。M-P:启用/禁用软换行(文本自动换行)。M-8:启用/禁用自动缩进。^G:显示帮助文档,列出所有快捷键。
其他
^C:显示当前光标位置(行、列等信息)。M-/:取消当前操作(若 Nano 卡住)。
异常处理
- .nano 文件问题:
- Nano 编辑文件时会创建一个临时文件(通常以
.save或.nano结尾)。 - 若打开文件时提示临时文件存在,可能是上次编辑未正常退出。
- 解决方法:
- Nano 会提示是否恢复临时文件,选择
Y(是)以恢复未保存的内容。 - 若不需要恢复,可选择
N(否),或手动删除临时文件(通常位于~/.nano/目录)。
- 注意事项:恢复临时文件前,确认是否需要保存上次未保存的更改,以免覆盖。
注意事项
- 快捷键提示:Nano 界面底部始终显示常用快捷键(如
^X Exit表示Ctrl+X退出),方便初学者使用。 - 区分大小写:查找和替换操作默认区分大小写,可通过
^W后按M-C切换大小写敏感模式。 - 配置文件:可通过编辑
~/.nanorc自定义 Nano 设置,如默认显示行号、启用语法高亮等。 - 学习资源:Nano 内置帮助文档(
^G)是快速学习的好工具,建议初学者阅读。 - 局限性:Nano 功能较 Vim 简单,适合轻量级编辑,不支持复杂脚本或多文件操作。
- 版本差异:不同版本的 Nano 可能支持不同快捷键或功能(如正则表达式),建议检查版本(
nano --version)。
Tmux
核心概念
Tmux 的结构主要包含三个层级:
- 会话 (Session):
- 一个会话是 Tmux 管理的最高层级,可以看作是一个独立的工作区。
- 每个会话包含一个或多个窗口。
- 窗口 (Window):
- 一个窗口占据整个终端屏幕,类似于应用程序中的一个标签页。
- 每个窗口包含一个或多个窗格。
- 窗格 (Pane):
- 一个窗格是窗口中的一个分割区域,它是一个独立的终端 Shell。
- 用户可以在一个窗口内创建多个窗格,实现分屏效果。
Tmux 外部命令 (从 Shell 执行)
注意:以下命令直接在的常规终端(例如 Bash, Zsh)中输入并执行,而不是在 Tmux 会话内部。
创建会话 (Creating Sessions)
tmux new -s <session_name>:创建一个名为<session_name>的新会话并立即进入。tmux new:创建一个以数字自动编号的新会话。tmux new -d -s <session_name>:在后台创建一个名为<session_name>的新会话,但不立即进入。这在系统启动脚本中非常有用。
连接会话 (Attaching to Sessions)
tmux ls:列出所有正在后台运行的 Tmux 会话及其信息。tmux attach -t <session_name>:连接(Attach)到名为<session_name>的已存在会话。tmux a -t <session_name>:attach命令的简写形式,功能完全相同。tmux attach:如果当前只有一个正在运行的会话,可省略会话名,直接连接。
关闭会话 (Killing Sessions)
tmux kill-session -t <session_name>:关闭名为<session_name>的指定会话。tmux kill-session -a:关闭所有正在运行的会话。tmux kill-server:关闭所有会话并完全终止 Tmux 服务进程。- 警告:这是一个彻底的操作,所有会话及其内部运行的程序都将被立即终止,未保存的工作会丢失。
操作
所有操作都需要先按下 前缀键 (Prefix),Tmux 的默认前缀键是 Ctrl + b。按下前缀键后松开,再按后续的命令键。
会话管理 (Session)
tmux new -s <session_name>:创建一个名为<session_name>的新会话。tmux attach -t <session_name>或tmux a -t <session_name>:重新连接到名为<session_name>的会话。tmux ls:列出所有正在运行的 Tmux 会话。Ctrl + b+s:在 Tmux 内部以交互式列表显示所有会话,并可进行切换。Ctrl + b+d:分离 (Detach) 当前会话,返回到常规终端(会话在后台继续运行)。Ctrl + b+$:重命名当前会话。tmux kill-session -t <session_name>:在 Tmux 外部关闭指定的会话。tmux kill-server:关闭所有会话并终止 Tmux 服务。
窗口管理 (Window)
Ctrl + b+c:在当前会话中创建一个新窗口。Ctrl + b+w:以交互式列表显示当前会话的所有窗口,并可进行切换。Ctrl + b+p:切换到上一个窗口。Ctrl + b+n:切换到下一个窗口。Ctrl + b+0-9:根据窗口编号快速切换到指定窗口(例如Ctrl + b+1切换到 1 号窗口)。Ctrl + b+,:重命名当前窗口。Ctrl + b+&:关闭当前窗口(会进行确认)。
窗格管理 (Pane)
Ctrl + b+":将当前窗格水平分割(上下布局)。Ctrl + b+%:将当前窗格垂直分割(左右布局)。Ctrl + b+方向键(↑, ↓, ←, →):在不同窗格之间切换。Ctrl + b+o:按顺序在当前窗口的窗格间循环切换。Ctrl + b+x:关闭当前窗格(会进行确认)。Ctrl + b+z:将当前窗格最大化/恢复原状 (Zoom)。Ctrl + b+Space:在预设的窗格布局之间切换。Ctrl + b+q:短暂显示所有窗格的编号,然后按下编号可快速切换到对应窗格。Ctrl + b+{:将当前窗格与上一个窗格交换位置。Ctrl + b+}:将当前窗格与下一个窗格交换位置。Ctrl + b+Alt + 方向键:按住Ctrl + b不放,同时按Alt和方向键,可以调整窗格大小。
其他
Ctrl + b+t:在当前窗格显示一个大时钟。Ctrl + b+[:进入复制模式 (Copy Mode)。- 在此模式下,可以使用类似 Vim 的键位移动光标、滚动屏幕。
- 按
Space开始选择,移动光标后按Enter复制所选内容。 - 按
q退出复制模式。
Ctrl + b+]:粘贴最近一次复制的内容。
Config
|
|
异常处理
- 无法连接会话:
- 问题:使用
tmux attach时提示 “no sessions” 或找不到指定的会话。 - 解决方法:
- 先使用
tmux ls确认会话是否真的存在以及其确切名称。 - 如果会话意外终止,需要重新使用
tmux new -s <session_name>创建。
- 先使用
- 问题:使用
- 前缀键冲突:
- 问题:
Ctrl + b可能与其他应用程序(如某些 IDE 的快捷键)冲突。 - 解决方法:
- 可以通过编辑
~/.tmux.conf配置文件来修改前缀键。例如,将set -g prefix C-a添加到文件中,可以将前缀键改为Ctrl + a。 - 修改后需要重新加载配置 (
tmux source-file ~/.tmux.conf) 或重启 Tmux 服务。
- 可以通过编辑
- 问题:
注意事项
- 前缀键操作:几乎所有 Tmux 命令都需要先按下前缀键
Ctrl + b。这是一个组合操作,即先按下Ctrl + b并松开,然后再按下一个命令键(例如c,d,%等)。 - 鼠标模式:Tmux 支持鼠标操作(如选择窗口、调整窗格大小),但默认通常是关闭的。可以在
~/.tmux.conf中添加set -g mouse on来开启它,这对于新手非常友好。 - 配置文件:通过创建和编辑
~/.tmux.conf文件,可以高度自定义 Tmux 的行为和外观,例如更改快捷键、设置状态栏样式、颜色主题等。 - 嵌套会话:应避免在 Tmux 会话中再次启动一个新的 Tmux 会- 话。这会导致前缀键命令混乱,因为内部和外部的 Tmux 实例都会尝试捕获它。如果需要操作外部会话,可以先分离内部会话。