跳到主要内容

编辑文件

编辑文件常用的方式为预装的 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 完成所有的文本编辑工作(即使是简单的配置文件)。遇到不会的操作就先查本文或搜索引擎。
  • 循序渐进:一次只学一两个新命令。例如,今天专门练习用 ddp 来删除和粘贴行,明天练习用 dww
  • 理解哲学:记住 操作符 (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 + OOut - 保存
  • Ctrl + XXit - 退出
  • Ctrl + GGet Help - 忘记时随时求助

nano 的设计初衷就是简单直观,底部的提示栏时刻为你提供帮助,这使得它成为在终端中快速编辑配置文件或写简单脚本的绝佳选择。