### Linux下vi命令大全解析 #### 一、进入vi的命令 在Linux环境中,vi编辑器是最常用的文本编辑工具之一,其强大的功能和灵活性使其成为系统管理员和开发者的首选。以下是一些基本的vi命令,用于打开和编辑文件: - `vi filename`: 打开或创建名为`filename`的文件,将光标置于文件的第一行。 - `vi +n filename`: 打开文件并将光标定位在第n行。 - `vi + filename`: 打开文件并将光标置于文件的最后一行。 - `vi +/pattern filename`: 打开文件,并将光标置于文件中第一个与`pattern`相匹配的字符串处。 - `vi -r filename`: 在发生系统崩溃后,用于恢复`filename`文件,确保数据不会丢失。 - `vi filename1 filename2 ...`: 同时打开多个文件,依次进行编辑。 #### 二、移动光标类命令 了解如何在vi中移动光标对于高效编辑至关重要。以下是几个常用命令: - `h`: 光标左移一个字符。 - `l` 或 `Space`: 光标右移一个字符。 - `k` 或 `Ctrl+p`: 光标上移一行。 - `j` 或 `Ctrl+n`: 光标下移一行。 - `Enter`: 光标下移一行。 - `w` 或 `W`: 移动到下一个单词的开头。 - `b` 或 `B`: 移动到前一个单词的开头。 - `e` 或 `E`: 移动到下一个单词的结尾。 - `(`: 移动到句子的开始。 - `)`: 移动到句子的结束。 - `{`: 移动到段落的开始。 - `}`: 移动到段落的结束。 - `nG`: 将光标移到第n行。 - `n+`: 下移n行。 - `n-`: 上移n行。 - `n$`: 将光标移到第n行的末尾。 - `H`: 将光标移动到屏幕的最上一行。 - `M`: 将光标移动到屏幕的中间行。 - `L`: 将光标移动到屏幕的最下行。 - `0` (数字零): 将光标移到当前行的开头。 - `$`: 将光标移到当前行的末尾。 #### 三、屏幕翻滚类命令 为了更好地浏览文件内容,vi提供了屏幕翻滚功能: - `Ctrl+u`: 屏幕向上滚动半屏,即向文件的开头方向滚动。 - `Ctrl+d`: 屏幕向下滚动半屏,即向文件的结尾方向滚动。 - `Ctrl+f`: 屏幕向下滚动一整屏。 - `Ctrl+b`: 屏幕向上滚动一整屏。 - `nz`: 将第n行滚动至屏幕顶部,如果不指定n,默认为当前行。 #### 四、插入文本类命令 在vi中插入文本是常见的需求: - `i`: 在光标前插入文本。 - `I`: 在当前行首插入文本。 - `a`: 在光标后插入文本。 - `A`: 在当前行尾插入文本。 - `o`: 在当前行下新开一行插入文本。 - `O`: 在当前行上新开一行插入文本。 - `r`: 替换当前字符。 - `R`: 替换当前字符及其后的字符,直到按ESC键停止。 - `s`: 从当前光标位置开始,替换指定数目的字符。 - `S`: 删除指定数目的行,并以所输入的文本代替之。 - `ncw` 或 `nCW`: 修改指定数目的字。 - `nCC`: 修改指定数目的行。 #### 五、删除命令 删除文本也是vi编辑器的核心功能之一: - `ndw` 或 `ndW`: 删除光标处开始及其后的n-1个字。 - `do`: 删除至行首。 - `d$`: 删除至行尾。 - `ndd`: 删除当前行及其后n-1行。 - `x` 或 `X`: 删除一个字符,`x`删除光标后的,而`X`删除光标前的。 #### 六、搜索及替换命令 快速查找和替换文本是提高编辑效率的关键: - `/pattern`: 从光标开始处向文件尾搜索`pattern`。 - `?pattern`: 从光标开始处向文件首搜索`pattern`。 - `n`: 在同一方向重复上一次搜索命令。 - `N`: 在反方向上重复上一次搜索命令。 - `:s/p1/p2/g`: 将当前行中所有`p1`均用`p2`替代。 - `:n1,n2s/p1/p2/g`: 将第n1至n2行中所有`p1`均用`p2`替代。 - `:g/p1/s//p2/g`: 将文件中所有`p1`均用`p2`替换。 #### 七、选项设置 自定义vi的环境可以优化编辑体验: - `all`: 列出所有选项设置情况。 - `term`: 设置终端类型。 - `ignorance`: 在搜索中忽略大小写。 - `list`: 显示制表位(Ctrl+I)和行尾标志($)。 - `number`: 显示行号。 - `report`: 显示由面向行的命令修改过的数目。 - `terse`: 显示简短的警告信息。 - `warn`: 在转到别的文件时若没保存当前文件则显示NOwrite信息。 - `nomagic`: 允许在搜索模式中,使用前面不带“\”的特殊字符。 - `nowrapscan`: 禁止vi在搜索到达文件两端时,又从另一端开始。 #### 八、最后行方式命令 在最后行模式下,vi提供了更多的控制和管理文件的能力: - `:n1,n2con3`: 将n1行到n2行之间的内容拷贝到第n3行下。 - `:n1,n2mn3`: 将n1行到n2行之间的内容移至到第n3行下。 - `:n1,n2d`: 将n1行到n2行之间的内容删除。 - `:w`: 保存当前文件。 - `:efilename`: 打开文件`filename`进行编辑。 - `:x`: 保存当前文件并退出。 - `:q`: 退出vi。 - `:q!`: 不保存文件并退出vi。 - `:!command`: 执行shell命令`command`。 - `:n1,n2w!command`: 将文件中n1行至n2行的内容作为`command`的输入并执行之,若不指定n1,n2,则表示将整个文件内容作为`command`的输入。 - `:r!command`: 将命令`command`的输出结果放到当前行。 #### 九、寄存器操作 vi的寄存器功能提供了对数据的强大管理能力: - `"?nyy`: 将当前行及其下n行的内容保存到寄存器?中,其中?为一个字母,n为一个数字。 - `"?nyw`: 将当前行及其下n个字保存到寄存器?中,其中?为一个字母,n为一个数字。 - `"?nyl`: 将当前行及其下n个字符保存到寄存器?中,其中?为一个字母,n为一个数字。 - `"?p`: 取出寄存器?中的内容并将其放到光标位置处。这里?可以是一个字母,也可以是一个数字。 - `ndd`: 将当前行及其下共n行文本删除,并将所删内容放到1号删除寄存器中。 通过熟练掌握以上vi命令,你可以在Linux环境下更加高效地进行文本编辑和文件管理。这些命令不仅适用于日常操作,还能在复杂的数据处理和脚本编写中发挥重要作用。
- 粉丝: 2
- 资源: 19
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助