Linux vi 命令
Linux中的vi(Visual Editor)命令是一个强大的文本编辑器,对于任何想要深入学习和掌握Linux系统的用户来说,了解和熟练使用vi都是必不可少的技能。vi编辑器分为两种模式:命令模式和插入模式。以下是对vi命令的详细解释: 1. **进入vi**: - `vi filename`:打开或创建一个名为filename的文件,光标位于第一行首。 - `vi +n filename`:打开filename,光标位于第n行首。 - `vi + filename`:打开文件,光标位于最后一行首。 - `vi +/pattern filename`:打开文件,光标定位在第一个匹配pattern的字符串处。 - `vi -r filename`:在上次编辑时发生系统崩溃,可以恢复filename的编辑状态。 - `vi filename....filename`:一次打开多个文件,顺序进行编辑。 2. **移动光标**: - `h`:光标左移一个字符。 - `l`或`space`:光标右移一个字符。 - `Backspace`:光标左移一个字符。 - `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`(数字零):光标移到当前行首。 - `$`:光标移到当前行尾。 3. **屏幕翻滚**: - `Ctrl+u`:向上滚动半屏。 - `Ctrl+d`:向下滚动半屏。 - `Ctrl+f`:向文件尾滚动一屏。 - `Ctrl+b`:向文件首滚动一屏。 - `nz`:将第n行滚动到屏幕顶部,不指定n时滚动当前行到顶部。 4. **插入文本**: - `i`:在光标前插入文本。 - `I`:在当前行首插入文本。 - `a`:在光标后插入文本。 - `A`:在当前行尾插入文本。 - `o`:在当前行下新开一行并开始插入。 - `O`:在当前行上新开一行并开始插入。 - `r`:替换当前字符。 - `R`:替换当前字符及其后的字符,直到按下`ESC`键。 - `s`:替换当前光标位置的字符。 - `S`:删除指定数量的行,并用输入的文本替换。 - `ncw`或`nCW`:修改指定数量的字。 - `nCC`:修改指定数量的行。 5. **删除命令**: - `ndw`或`ndW`:删除从光标开始及其后的n-1个字。 - `do`:删除到行首。 - `d$`:删除到行尾。 - `ndd`:删除当前行及其后的n-1行。 - `x` 或 `X`:删除一个字符,`x` 删除光标后,`X` 删除光标前。 - `Ctrl+u`:删除输入模式下输入的文本。 6. **搜索及替换**: - `/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。 7. **选项设置**: - `all`:显示所有选项设置。 - `term`:设置终端类型。 - `ignorance`:在搜索中忽略大小写。 - `list`:显示制表符和行尾标志。 - `number`:显示行号。 - `report`:显示由面向行的命令修改过的数目。 - `terse`:显示简短的警告信息。 - `warn`:在转到其他文件时未保存当前文件时显示NO write信息。 - `nomagic`:允许在搜索模式中使用未转义的特殊字符。 - `nowrapscan`:禁止vi在搜索到达文件两端时从另一端开始。 8. **最后行模式命令**: - `:n1,n2 co n3`:将n1行到n2行内容复制到第n3行下。 - `:n1,n2 m n3`:将n1行到n2行内容移动到第n3行下。 - `:n1,n2 d`:删除n1行到n2行内容。 - `:w`:保存当前文件。 - `:e filename`:打开文件filename进行编辑。 - `:x`:保存当前文件并退出。 - `:q`:退出vi。 - `:q!`:不保存文件并退出vi。 - `:!command`:执行shell命令command。 - `:n1,n2 w!command`:将文件中n1行到n2行内容作为command的输入并执行。 - `:r!command`:将命令command的输出结果放到当前行。 9. **寄存器操作**: - `"?nyy`:将当前行及其下n行内容保存到寄存器?中。 - `"?nyw`:将当前行及其下n个字保存到寄存器?中。 - `"?nyl`:将当前行及其下n个字符保存到寄存器?中。 - `"?p`:取出寄存器?中的内容并粘贴。 掌握这些基本的vi命令,你就能在Linux环境中更高效地编辑和管理文本文件了。随着使用经验的积累,你还可以探索更多高级功能,如宏、可视化选择等,提升你的Linux文本编辑能力。