vi(vim) 编辑器
是Linux上最常用的编辑器,vim是vi的增强版。
vi 编辑器一般分为三种模式,一般模式、编辑模式 和 命令模式。不同模式下可以进行不同的操作。
一般模式
一般模式下,可进行光标位置的移动,删除字符 以及 复制 字符等。
光标移动快捷键
操作 | 快捷键 | 说明 |
向下移动光标 | ↓(向下方向键)、j键 或 space(空格) | 每按一次光标向下移动一行 |
– | – | – |
向上移动光标 | ↑(向上方向键)、k键 或 backspace | 每按一次光标向上移动一行 |
– | – | – |
向左移动光标 | ←(向上方向键)、h键 | 每按一次光标向左移动一行 |
– | – | – |
向右移动光标 | →(向上方向键)、k键 或 backspace | 每按一次光标向移动一行 |
– | – | – |
移至下一行行首 | 回车键 | 每按一次光标移动到下一行行首 |
– | – | – |
移至上一行行首 | -键 | 每按一次光标移动到上一行行首 |
– | – | – |
移至文件最后一行行首 | G键 | 将光标移动到最后一行行首 |
– | – | – |
移至文件第一行行首 | gg键 | 将光标移动到第一行行首 |
– | – | – |
移至文件指定行(n)行首 | ngg键 / nG / :n / vim +n filename (进入文件时) | 将光标移动到指定行行首 |
除了上述表中的光标移动的快捷键之外,还有部分快捷键是在命令模式下使用的→(后面细说)
文本操作快捷键
操作 | 快捷键 | 说明 |
右插入 | a | 在当前光标所处位置的右边插入文本 |
– | – | – |
左插入 | i | 在当前光标所处位置的左边插入文本 |
– | – | – |
行尾追加 | A | 在当前行的末尾追加文本 |
– | – | – |
行首插入 | I | 在当前行的开始处插入文本 |
– | – | – |
插入行 | O或o | O键是在当前位置的上一行位置插入新行,o是在下一行 |
– | – | – |
覆盖文本 | R | 覆盖当前光标所在位置以及后面的若干文本 |
– | – | – |
合并行 | J | 将当前光标所在行与下面的一行合并为一行 |
在上述表中的快捷键中,除了J键,其他的快捷键都会让vi编译器从一般模式进入编辑模式。
进入编辑模式后 可以通过 Esc 键来退出编辑模式,再次进入一般模式
文本复制和粘贴快捷键
操作 | 快捷键 | 说明 |
复制行 | yy | 将当前行复制到缓冲区 |
– | – | – |
复制多行 | nyy | 将当前行及以下的n行复制到缓冲区,其中n为一个整数。 |
– | – | – |
复制单词 | yw | 复制从光标当前位置到当前单词词尾的字符 |
– | – | – |
复制多个单词 | nyw | 从光标位置开始复制后面n个单词,n为一整数 |
– | – | – |
复制光标到行首 | y^ | 从光标当前位置开始,复制到行首 |
– | – | – |
复制光标到行首 | y$ | 从光标当前位置开始,复制到行尾 |
– | – | – |
粘贴到光标后面的位置 | p | 将缓冲区中的字符串插入到当前光标的后面 |
– | – | – |
粘贴到光标前面的位置 | P | 将缓冲区中的字符串插入到当前光标的前面 |
如果光标在单词中间,那么yw不能复制完整的单词。
删除文本快捷键
操作 | 快捷键 | 说明 |
删除当前字符 | x | 删除光标所在位置的字符 |
– | – | – |
删除多个字符 | nx | 删除从光标所在位置开始,后面的n个字符 |
– | – | – |
删除当前行 | dd | 删除光标所在位置的整行 |
– | – | – |
删除多行 | ndd | 删除包含当前行在内的n行 |
– | – | – |
撤销上一步操作 | u | 撤销刚刚执行的操作 |
– | – | – |
撤销多个操作 | U | 撤销针对当前行的所有操作 |
多字符组成的快捷键,按的时候快一点
编辑模式
编辑模式下,和txt文本编辑器差不多
不能再用h、j、k、l,来移动光标了,也不能用x来删除了。他们就是他们自己。
命令模式
在命令模式下,用户主要完成文件的打开、保存、将光标跳转到某行,以及显示行号等操作。
在一般模式下, 按 “:” 之后,进入命令模式
常用的vi命令
操作 | 快捷键 | 说明 |
打开文件 | :e | 打开另外一个文件,将文件名作为参数 |
– | – | – |
保存文件 | :w | 保存文件,即将文件的改动写入磁盘。如果将文件另存为其他文件名,则可以将新文件名作为参数 |
– | – | – |
退出vi编辑器 | :q | 退出 |
– | – | – |
直接退出编辑器 | q! | 不保存修改,直接退出vi编辑器 |
– | – | – |
退出并保存 | :wq | 将文件保存后 再 退出vi 编辑器 |
感叹号 “ ! ” 在编辑器中表示跳过某些检查,强制执行某些操作。
例如:直接退出 :q! ,这样vi将不保存修改,直接退出,,类似的 还有 :e! ,也是不保存修改,直接跳到下一个文件。当然,:w! 也能强制修改 只读文件,可了不得!!!
常用的其他命令
操作 | 快捷键 | 说明 |
跳至指定行 | :n 、 :+n 或 : -n | :n 表示跳到行号为n 的行,:+n 表示向下跳 n 行,:-n 表示向上跳n行 |
– | – | – |
显示或隐藏行号 | :set nu 或 set nonu | :set nu 表示在每行前面显示行号;set nonu 表示隐藏行号 |
– | – | – |
替换字符串 | :s/old/new、:s/old/new/g (这个 “冒号” 应该是英文的,但是 :+s 会变成小表情 → 😒)、:n,m s/old/new/g 或 :%s/old/new/g | :s/old/new 表示用字符串 new 替换 当前行中首次出现的字符串 old; :s/old/new/g 表示用字符串new 替换 当前行 所有的 old;:n,m s/old/new/g 表示用字符串new替换从 n 行到 m 行 所有的old;:%s/old/new/g 表示用字符串 new 替换当前文件中所有的字符串old |
– | – | – |
设置文件格式 | :set fileformat=linux | 将文件修改为 unix 格式,如win下面的文本文件在Linux下会出现^M。其中fileformat 可以取unix 或 dos 等值 |
到这,三个模式就大致说完了,,但。。
还有个 搜索 ,
搜索有点特殊,也比较常用,所以单独拿出来说,并且再介绍一种 非vi命令的 查找(grep)
搜索:Shell——文件内容的查询