编辑文件
编辑文件常用的方式为预装的 vim 和可能预装的更专注于文本编辑的 nano;
- nano 适合新手和需要快速简单编辑的用户
- vim 适合开发者、系统管理员、需要长时间进行文件操作的专业用户
vim
追求编辑效率和强大功能,学习曲线陡峭
核心概念:模式
Vim 与其他编辑器最大的不同在于其模式概念。你总是在某种模式下工作,不同模式下敲击同一个键的效果完全不同。这是新手最需要适应的地方。
主要模式有:
- 正常模式 (Normal Mode):也称为命令模式。这是 Vim 的默认模式和核心。在此模式下,你可以移动光标、复制、粘贴、删除、搜索等。你大部分时间都应该待在这个模式下,只有需要输入文本时才进入插入模式。
- 插入模式 (Insert Mode):在这个模式下,你可以像在普通编辑器(如 Notepad, Nano)中一样输入和编辑文本。
- 可视模式 (Visual Mode):类似于用鼠标选择文本,但完全用键盘操作。
- 命令行模式 (Command-Line Mode):用于执行保存、退出、搜索替换等高级命令。
退出
这可能是最重要的部分。很多新手打开 Vim 后不知道如何退出。
- 打开文件:
vim filename.txt
- 进入插入模式(开始打字):按下
i
键。此时底部会显示-- INSERT --
,现在你可以正常输入文字了。 - 返回正常模式(停止打字):按下
Esc
键。无论你在什么模式下,按Esc
总能让你回到安全港——正常模式。 - 保存文件:在正常模式下,输入
:w
然后按Enter
。(:
会带你进入命令行模式,w
代表 write) - 退出 Vim:在正常模式下,输入
:q
然后按Enter
。(q
代表 quit) - 保存并退出:在正常模式下,输入
:wq
然后按Enter
。 - 不保存强制退出!:如果你搞砸了,想放弃所有修改,在正常模式下输入
:q!
然后按Enter
。(!
代表强制)
记住这个序列就能保命:i
-> 打字 -> Esc
-> :wq
-> Enter
移动光标(正常模式下)
在正常模式下,你不能用方向键吗?当然可以,但效率低下。Vim 的设计让你手不离主键盘区。
- 基本移动:
h
- 左j
- 下k
- 上l
- 右
- 以词为单位移动:
w
- 跳到下一个单词的词首b
- 跳到上一个单词的词首e
- 跳到当前或下一个单词的词尾
- 行内移动:
0
- 跳到行首$
- 跳到行尾^
- 跳到行首第一个非空白字符
- 跨行移动:
gg
- 跳到文件第一行G
- 跳到文件最后一行5G
- 跳到第 5 行Ctrl + f
- 向下翻页Ctrl + b
- 向上翻页
基础编辑(正常模式 -> 操作命令)
Vim 的编辑哲学是 操作符 + 动作 = 行为。
-
删除
x
- 删除光标下的字符dw
- delete word(从光标处删除至下一个词首)dd
- 删除当前整行5dd
- 删除从当前行开始的 5 行d$
- 从光标处删除至行尾
-
复制 (Yank) 与粘贴
yy
- 复制当前整行yw
- 复制一个词p
- 在光标后粘贴P
- 在光标前粘贴
-
撤销与重做
u
- undo 撤销Ctrl + r
- redo 重做
-
进入插入模式的几种方式
i
- 在光标前插入a
- 在光标后追加I
- 在行首插入A
- 在行尾追加o
- 在当前行下方打开新行并插入O
- 在当前行上方打开新行并插入
搜索与替换
-
搜索:
/pattern
- 向后搜索pattern
,按n
跳转到下一个匹配项,按N
上一个。?pattern
- 向前搜索。- 搜索后按
Enter
开始。
-
替换(命令行模式):
:%s/old/new/g
- 将文件中所有的old
替换为new
。%
- 代表所有行s
- 替换g
- 一行内的所有匹配项(全局)
:10,20s/old/new/g
- 只替换第 10 到 20 行。
学习路径与建议
- 不要死记硬背:先记住生存命令(
i
,Esc
,:wq
)。 - 使用内置教程:在终端输入
vimtutor
。这是官方提供的交互式教程,花 30 分钟 完成它,效果远超阅读任何文章。 - 强制练习:在接下来的一周里,强迫自己用 Vim 完成所有的文本编辑工作(即使是简单的配置文件)。遇到不会的操作就先查本文或搜索引擎。
- 循序渐进:一次只学一两个新命令。例如,今天专门练习用
dd
和p
来删除和粘贴行,明天练习用dw
和w
。 - 理解哲学:记住
操作符 (d, y) + 动作 (w, $, G) = 行为
。你会发现命令是可以组合的,例如dG
(删除到文件末尾)、y$
(复制到行尾)。
Vim 的强大远不止于此,还有宏、分屏、插件管理器、代码补全等高级功能。
nano
nano:追求简单易用,开箱即用
打开和创建文件
基本命令格式是 nano [选项] [文件名]
。
打开一个已存在的文件
nano filename.txt
如果 filename.txt
存在,则打开它;如果不存在,则创建它。
以只读模式打开文件(防止意外修改)
nano -v filename.txt
或者
nano --view filename.txt
- 创建新文件:直接使用新文件名即可。
nano new_file.txt
界面介绍
打开 nano
后,你会看到类似以下的界面:
GNU nano 6.2 /home/user/example.txt
[这里是你文件的内容]
^G 帮助 ^O 写入 ^W 搜索 ^K 剪切 ^J 对齐 ^C 位置
^X 退出 ^R 读入文件 ^\ 替换 ^U 粘贴 ^T 检查 ^_ 跳行
- 顶部:显示
nano
版本和当前编辑的文件路径。 - 中部:文本编辑区域。
- 底部:两行最重要的快捷方式提示栏。
^
符号代表 Ctrl 键。
基本操作和常用快捷键
nano
的操作主要依靠键盘快捷键,这些快捷键通常通过 Ctrl
键(在提示栏中显示为 ^
)或 Alt
键(在提示栏中显示为 M-
)来触发。
核心操作
保存 (Write Out)
使用 Ctrl + O
(^O
)
- 按下后,底部会询问文件名,直接按
Enter
以当前文件名保存 - 如果你想另存为新文件,此时输入新文件名再按
Enter
退出 (Exit)
使用 Ctrl + X
(^X
) 执行退出。如果你修改了文件但没有保存,nano
会问你是否要保存修改
- 按
Y
:是,保存并退出。(如果是新文件,会提示你输入文件名) - 按
N
:否,放弃所有修改并退出。 - 按
Ctrl + C
:取消,返回编辑器。
获取帮助 (Help)
使用 Ctrl + G
(^G
) 显示所有快捷键的帮助文档,按 Ctrl + X
可以返回。
编辑操作
剪切整行 (Cut)
使用 Ctrl + K
(^K
) 将光标所在的一整行内容剪切到剪贴板。
粘贴 (Paste)
使用 Ctrl + U
(^U
) 将剪贴板的内容粘贴到光标所在位置。
选择文本
- 先按
Alt + A
(或Ctrl + ^
,取决于版本)来设置标记。 - 然后使用方向键移动光标来选择文本区域。
- 选中后,可以使用
Ctrl + K
来剪切选中的部分(而不再是整行)。 - 同样使用
Ctrl + U
来粘贴。
撤销 (Undo)
使用 Alt + U
(M-U
)
重做 (Redo)
使用 Alt + E
(M-E
)
光标移动和搜索
移动光标
使用方向键 (↑
, ↓
, ←
, →
)
跳到行首/行尾
Ctrl + A
:跳到行首Ctrl + E
:跳到行尾
跳到文件开头
使用 Alt + \
(M-\
) 或 Alt + /
(M-/
)
跳到文件结尾
使用 Alt + /
(M-/
) 或 Alt + \
(M-\
) (取决于版本)
搜索 (Where Is) Ctrl + W
(^W
)
- 按下后,在底部输入要搜索的词,按
Enter
开始搜索。 - 找到后,光标会停在第一个匹配项。按
Alt + W
可以跳到下一个匹配项。
搜索并替换 (Replace) Ctrl + \
(^\
)
- 输入要搜索的词语。
- 输入要替换成的词语。
- 它会询问是否替换当前匹配项 (
Y
/N
),或者全部替换 (A
)。
实用技巧和选项
显示行号
启动时加上 -l
选项。
nano -l filename.txt
或者在编辑器内按 Alt + N
来切换显示行号。
自动缩进
在编写代码时非常有用。在编辑器内按 Alt + M
可以开启或关闭此功能。
在特定行号打开文件
nano +line_number filename.txt
例如 nano +10 my_script.sh
会直接在 my_script.sh
的第 10 行打开它。
匹配括号
当光标在 (
, {
, [
上时,按 Alt + ]
可以将光标跳到匹配的闭合括号上。
总结
对于初学者来说,只需记住三个最关键的快捷键就能开始使用 nano
:
Ctrl + O
:Out - 保存Ctrl + X
:Xit - 退出Ctrl + G
:Get Help - 忘记时随时求助
nano
的设计初衷就是简单直观,底部的提示栏时刻为你提供帮助,这使得它成为在终端中快速编辑配置文件或写简单脚本的绝佳选择。