【Linux】《Linux命令行与shell脚本编程大全 (第4版) 》笔记-Chapter10-文本编辑器
十、文本编辑器
- 检查 vim 软件包
- readlink -f 命令能够直接找出一系列链接文件的最后一环。
- 在 Ubuntu 发行版中安装基础版的 vim 软件包:
$ sudo apt install vim
- vim 基础
- vim 编辑器在内存缓冲区中处理数据。
- 如果在启动 vim 时未指定文件名, 或者指定文件不存在, 则 vim 会开辟一段新的缓冲区进行 编辑。如果指定的是已有文件的名称, 则 vim 会将该文件的整个内容都读入缓冲区以备编辑。
- vim 编辑器会检测会话的终端类型,使用全屏模式来将整个控制台窗口作为编辑器区域。
- vim 提供了一些能够提高移动速度的命令:
- PageDown (或 Ctrl+F): 下翻一屏。
- PageUp (或 Ctrl+B):上翻一屏。
- G:移到缓冲区中的最后一行。
- num G:移到缓冲区中的第 num 行。
- gg:移到缓冲区中的第一行。
- 要进入 Ex 模式, 在命令模式中按下冒号键( : )即可。光 标会移动到屏幕底部的消息行处,然后出现冒号, 等待输入命令。
- Ex 模式中的以下命令可以将缓冲区的数据保存到文件中并退出 vim。
- q:如果未修改缓冲区数据,则退出。
- q!:放弃对缓冲区数据的所有修改并退出。
- w filename:将文件另存为其他名称。
- wq:将缓冲区数据保存到文件中并退出。
- 在命令模式中, vim 编辑器提供了可用于编辑缓冲区数据的命令。常用的vim 编辑命令如下表:
命令 |
描述 |
x |
删除光标当前所在位置的字符 |
dd |
删除光标当前所在行 |
dw |
删除光标当前所在位置的单词 |
d$ |
删除光标当前所在位置至行尾的内容 |
J |
删除光标当前所在行结尾的换行符(合并行) |
u |
撤销上一个编辑命令 |
a |
在光标当前位置后追加数据 |
A |
在光标当前所在行结尾追加数据 |
r char |
用 char 替换光标当前所在位置的单个字符 |
R text |
用 text 覆盖光标当前所在位置的内容,直到按下 ESC 键 |
- 有些编辑命令允许使用数字修饰符来指定重复该命令多少次。比如, 命令 2x 会从光标当前 位置开始删除两个字符,命令 5dd 会删除从光标当前所在行开始的 5 行。
- 在 vim 编辑器的命令模式中使用Backspace 键(退格键)和 Delete 键(删除键)时要留心。vim 编辑器通常会将 Delete 键识别成 x 命令的功能, 删除光标当前所在位置的字符。通常, vim 编辑器在命令模式中并不将 Backspace 键视为删除操作,而是将光标向后移动一个位置。
- 复制和粘贴
- 当 vim 删除内容时,实际上会将数据保存在一个单独区域内(寄存器),你可以用p 命令从中取回数据。
- vim 的复制命令是 y(代表 yank)。可以像 d 命令那样, 在y 之后使用另一个字符(yw 表示复制一个单词, y$表示复制到行尾)。复制过文本后, 将光标移动 到想放置文本的位置, 输入 p 命令。已复制的文本就会出现在那里。
- 可视模式会在光标移动时高亮显示文本。你可以利用该模式选取要复制的文本。要进入可视 模式, 可以移动光标到要开始复制的位置, 按下 v 键。你会注意到光标所在位置的文本已经被高 亮显示了。接下来, 移动光标来覆盖想要复制的文本(甚至可以向下移动几行来复制更多行的文 本)。随着光标的移动, vim 会高亮显示复制区域的文本。当覆盖了要复制的文本后,按下 y 键 来激活复制命令。现在寄存器中已经有了要复制的文本, 剩下的就是移动光标到需要的位置, 使 用 p 命令来粘贴。
- 查找和替换
- 如果要输入一个查找字符串, 可以按下 正斜线(/)键。光标会“跑”到屏幕底部的消息行,然后显示出一个正斜线。在输入要查找的 文本后, 按下 Enter 键。 vim 编辑器会执行下列三种操作之一。
- 如果要查找的文本出现在光标当前位置之后,则光标会跳到该文本出现的第一个位置。
- 如果要查找的文本未在光标当前位置之后出现, 则光标会绕过文件末尾,出现在该文本所在的第一个位置(并用一条消息指明)。
- 输出一条错误消息,说明在文件中没有找到要查找的文本。
- 如果要继续查找同一个单词,按/键,然后再按 Enter 键,或者按 n 键,表示下一个(next)。
- Ex 模式的替换命令允许快速将文本中的一个单词替换成另一个单词。要使用替换命令,必须处于命令行模式下。替换命令的格式是:s/old/new/。vim 编辑器会跳到 old 第一次出现的 地方并用 new来替换。可以对替换命令做一些修改来替换多处文本。
- /old/new/g:替换当前行内出现的所有 old。
- :n,ms/old/new/g:替换第 n 行和第 m 行之间出现的所有 old。
- :%s/old/new/g:替换整个文件中出现的所有 old。
- :%s/old/new/gc:替换整个文件中出现的所有 old,并在每次替换时提示。
- nano 编辑器
略。
- Emacs 编辑器
略。
- KDE 系编辑器
略。
- GNOME 编辑器
略。