「Linux系列」聊聊vi/vim的3种命令模式

03-19 1213阅读

文章目录

  • 一、vim简介
  • 二、命令模式
    • 1. 光标移动
    • 2. 复制、剪切和粘贴
    • 3. 撤销和重做
    • 4. 搜索和替换
    • 5. 显示行号
    • 三、输入模式
      • 1. 进入输入模式
      • 2. 在输入模式下编辑文本
      • 3. 使用特殊字符和快捷键
      • 注意事项
      • 四、命令行模式
        • 1. 保存和退出
        • 2. 查找和替换
        • 3. 显示行号和其他设置
        • 4. 执行外部命令
        • 注意事项
        • 五、相关链接

          一、vim简介

          Vim是高度可配置的,大多数常用的编辑功能都可以不必使用鼠标就可以实现,并提供了丰富的插件系统。Vim的这些特性使其成为了一个非常强大的文本编辑器,尤其适合在命令行界面中使用。

          「Linux系列」聊聊vi/vim的3种命令模式
          (图片来源网络,侵删)

          Vim的操作模式主要包括普通模式、插入模式和命令模式。在普通模式下,用户可以进行文本的定位、复制、粘贴、删除等操作;在插入模式下,用户可以输入文本;在命令模式下,用户可以执行一些特定的命令,如保存文件、退出Vim等。

          二、命令模式

          在 vi/vim 的命令模式下,用户可以执行一系列的命令来操作文本,而无需进入插入模式。

          1. 光标移动

          • h:左移一个字符
          • j:下移一行
          • k:上移一行
          • l:右移一个字符
          • w:向前移动到下一个单词的开头
          • b:向后移动到上一个单词的开头
          • e:向前移动到当前单词的结尾
          • 0(数字零):移动到当前行的开头
          • $:移动到当前行的结尾
          • G:移动到指定行号的位置,例如 10G 将光标移动到第10行

            案例:假设你正在编辑一个文本文件,并且想要快速将光标移动到第10行的末尾。你可以在命令模式下输入 10G$。

            2. 复制、剪切和粘贴

            • yy:复制当前行
            • dd:剪切当前行
            • p:粘贴到当前行的下一行
            • P:粘贴到当前行的上一行

              案例:假设你想要复制第5行并将其粘贴到第7行之后。你可以在命令模式下执行以下步骤:

              1. 将光标移动到第5行:5G
              2. 复制当前行:yy
              3. 将光标移动到第7行:7G
              4. 粘贴到下一行:p

              3. 撤销和重做

              • u:撤销上一步操作
              • Ctrl + r:重做上一步被撤销的操作

                案例:如果你在编辑文本时不小心删除了几行,你可以使用 u 命令来撤销这个操作。如果你又想要恢复那些被撤销的更改,可以使用 Ctrl + r 命令。

                4. 搜索和替换

                • /pattern:从当前位置开始向前搜索指定的模式
                • ?pattern:从当前位置开始向后搜索指定的模式
                • :s/old/new/g:在当前行替换第一个old为new
                • :%s/old/new/g:在全文替换old为new
                • :n,ms/old/new/g:在第n行到第m行之间替换old为new

                  案例:假设你想要在全文中将所有的 “apple” 替换为 “orange”。你可以在命令模式下输入 :%s/apple/orange/g。

                  5. 显示行号

                  • :set nu:显示行号
                  • :set nonu:取消显示行号

                    案例:如果你想要查看当前文件的行号,可以在命令模式下输入 :set nu。当你不再需要行号时,可以输入 :set nonu 来取消显示。

                    这些只是 vi/vim 命令模式下的一些基本命令和案例。实际上,vi/vim 的功能非常强大,还有许多高级特性和命令等待你去探索和学习。通过不断练习和实践,你可以逐渐掌握这个强大的文本编辑器,并提高你的文本编辑效率。

                    三、输入模式

                    在 vi/vim 编辑器中,输入模式(Insert Mode)是用户用于输入或编辑文本的模式。当从命令模式(Command Mode)切换到输入模式后,用户就可以开始输入文本了。

                    1. 进入输入模式

                    • i:在当前光标位置前插入文本。
                    • I:在当前行的行首插入文本。
                    • a:在当前光标位置后插入文本。
                    • A:在当前行的行末插入文本。
                    • o:在当前行的下一行插入新行并进入插入模式。
                    • O:在当前行的上一行插入新行并进入插入模式。

                      案例:假设你正在编辑一个文本文件,并且想要在第5行的行首插入一些文本。你可以在命令模式下执行以下步骤:

                      1. 将光标移动到第5行:5G
                      2. 在行首插入文本:I 然后输入你想要添加的文本,比如 “这是新添加的内容:”。
                      3. 按下 Esc 键退出输入模式,返回到命令模式。

                      2. 在输入模式下编辑文本

                      在输入模式下,除了 Esc 键用于退出输入模式外,其他的按键都可以被视作为一般的输入按键,用于输入文本。你可以输入字母、数字、标点符号等任何你需要的字符。

                      案例:继续上面的例子,假设你想要在刚才插入的文本后面继续输入一些内容。你可以直接在输入模式下继续输入,比如 “这是继续输入的内容。”,然后按下 Esc 键退出输入模式。

                      3. 使用特殊字符和快捷键

                      在输入模式下,你还可以使用一些特殊字符和快捷键来辅助编辑。例如:

                      • Ctrl + u:撤销当前行的所有更改。
                      • Ctrl + r:恢复被撤销的更改。
                      • Tab:插入制表符(通常用于缩进)。

                        案例:假设你在输入模式下输入了一行文本,但突然发现其中有误,你可以使用 Ctrl + u 来撤销整行的更改,然后重新输入。如果你想要恢复被撤销的更改,可以使用 Ctrl + r。

                        注意事项

                        • 在输入模式下,编辑器不会识别命令,只会将输入的字符作为文本内容。
                        • 按下 Esc 键是退出输入模式并返回到命令模式的唯一方式。
                        • 在输入模式下,你可以使用方向键来移动光标,但这通常不是最高效的做法。在 vi/vim 中,更推荐使用命令模式的光标移动命令来快速定位光标位置。

                          四、命令行模式

                          在 vi/vim 编辑器中,命令行模式(Command-line Mode)允许用户执行一些全局性的命令,如保存文件、退出编辑器、查找替换文本等。

                          1. 保存和退出

                          • :w:将当前编辑的内容写入文件。
                          • :q:退出 vi/vim 编辑器。
                          • :wq 或 ZZ(两个大写字母Z):保存文件并退出。
                          • :q!:不保存文件,强制退出。
                          • :w [filename]:将当前文件内容另存为新文件,filename 为新文件名。

                            案例:假设你编辑完一个文件后,想要保存并退出 vi/vim。你可以在命令行模式下输入 :wq 然后按回车键。如果你想直接退出而不保存更改,可以输入 :q!。

                            2. 查找和替换

                            • /pattern:在当前文件中向前查找指定的字符串 pattern。
                            • ?pattern:在当前文件中向后查找指定的字符串 pattern。
                            • :s/old/new/g:在当前行将 old 替换为 new。
                            • :%s/old/new/g:在整个文件中将 old 替换为 new。
                            • :n,ms/old/new/g:在文件的第 n 行到第 m 行之间将 old 替换为 new。

                              案例:如果你想在当前文件中查找所有的 “error” 字符串,可以在命令行模式下输入 /error 然后按回车键。每次按 n 键会向前查找下一个匹配项,按 N 键会向后查找。如果你想将文件中的所有 “error” 替换为 “mistake”,可以输入 :%s/error/mistake/g。

                              3. 显示行号和其他设置

                              • :set number 或 :set nu:显示文件的行号。
                              • :set nonumber 或 :set nonu:隐藏文件的行号。
                              • :set ignorecase:在查找时忽略大小写。
                              • :set paste:切换到粘贴模式,避免粘贴时出现格式问题。

                                案例:如果你想在编辑时显示文件的行号,可以在命令行模式下输入 :set number。当你不再需要显示行号时,可以输入 :set nonumber 来隐藏它们。

                                4. 执行外部命令

                                • :!command:执行 shell 命令 command,并返回到 vi/vim。

                                  案例:如果你想在编辑文件时执行一个外部命令(比如查看当前目录的文件列表),可以在命令行模式下输入 :!ls。执行完命令后,按回车键会返回到 vi/vim 继续编辑。

                                  注意事项

                                  • 在命令行模式下输入的命令通常以冒号 : 开头。
                                  • 输入完命令后,需要按回车键来执行。
                                  • 一些命令可能支持额外的参数或选项,可以通过查看 vi/vim 的文档或帮助信息来了解更多详情。

                                    五、相关链接

                                    1. Linux官网
                                    2. Linux常用命令
                                    3. CentOS官网下载地址
                                    4. 「Linux系列」Linux简介及常见的Linux系统
                                    5. 「Linux系列」Linux 系统启动过程
                                    6. 「Linux系列」Linux 系统目录结构/忘记密码解决方法
                                    7. 「Linux系列」Linux 远程登录/文件基本属性
                                    8. 「Linux系列」Linux 文件与目录管理
                                    9. 「Linux系列」Linux 如何学习用户和用户组管理
                                    10. 「Linux系列」聊聊Linux磁盘管理的事
VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]