### Linux VIM编辑器常用命令详解
#### 一、引言
VIM(Vi IMproved)是一款基于vi的增强版文本编辑器,广泛应用于Linux和其他类UNIX系统中。它不仅功能强大,而且易于学习和使用。本文将详细介绍VIM编辑器的一些基本概念以及常用命令,帮助读者更好地理解和掌握这一强大的文本编辑工具。
#### 二、命令历史
在VIM中,以“:”和“/”开头的命令都会被记录到命令历史中,用户可以通过上下箭头键来快速访问这些命令。例如,如果你之前执行过`:set number`命令来显示行号,那么只需键入“:”或“/”,然后使用上下箭头键即可再次调用该命令。
#### 三、启动VIM
在命令行界面中,可以通过以下几种方式启动VIM:
- `vim`:直接启动VIM编辑器。
- `vim filename`:打开或创建名为`filename`的文件,并在VIM中对其进行编辑。
- 更进一步,可以使用以下命令打开文件:
- `vim file`:打开单个文件。
- `vim file1 file2 file3`:同时打开多个文件。
- `:open file`:在当前VIM窗口中打开新文件。
- `:split file`:在新窗口中打开文件。
此外,还可以通过以下命令进行文件间的切换:
- `:bn`:切换到下一个文件。
- `:bp`:切换到上一个文件。
- `:args`:查看当前打开的所有文件列表,当前正在编辑的文件会用方括号“[]”标记出来。
- 打开远程文件:
- `:e ftp://192.168.10.76/abc.txt`:通过FTP协议打开远程文件。
- `:e \\qadrive\test\1.txt`:通过共享文件夹路径打开文件。
#### 四、VIM的模式
VIM有三种主要的工作模式:
- **正常模式**(按Esc或Ctrl+[进入):在此模式下,屏幕左下角通常会显示文件名或为空。这是默认模式,用户可以通过各种命令来操作文本。
- **插入模式**(按i键进入):屏幕左下角显示“-- INSERT --”。在该模式下,用户可以直接在文件中输入文本。
- **可视模式**(按v键进入):屏幕左下角显示“-- VISUAL --”。在此模式下,用户可以选中文本,便于进行复制、剪切等操作。
#### 五、导航命令
- `%`:括号匹配,自动跳转到对应的括号位置。
- `i`:在当前位置前插入文本。
- `I`:在当前行首插入文本。
- `a`:在当前位置后插入文本。
- `A`:在当前行尾插入文本。
- `o`:在当前行之后插入一行。
- `O`:在当前行之前插入一行。
#### 六、查找与替换命令
- `/text`:从当前位置开始向后查找`text`,按`n`键查找下一个,按`N`键查找前一个。
- `?text`:从当前位置开始向前查找`text`,按`n`键查找下一个,按`N`键查找前一个。
- 特殊字符如`.`, `*`, `[`, `]`, `^`, `%`, `?`, `~`, `$`在查找时需要使用`\`进行转义。
- `:set ignorecase`:设置忽略大小写的查找。
- `:set noignorecase`:取消忽略大小写的查找。
- 使用`*`或`#`键进行单词搜索,其中`*`等同于正向搜索`/word`,而`#`等同于反向搜索`?word`。
- `:set hlsearch`:高亮搜索结果。
- `:set nohlsearch`:关闭高亮搜索。
- `:set incsearch`:启用逐步搜索,即随着输入的字符动态更新搜索结果。
- `:set wrapscan`:在搜索到文件头或尾时,自动返回到另一端继续搜索。
#### 七、替换命令
- `r`:替换当前字符。
- `s/old/new/`:将当前行中的第一个`old`替换为`new`。
- `s/old/new/g`:将当前行中的所有`old`替换为`new`。
- `%s/old/new/`:将所有行中的第一个`old`替换为`new`。
- `%s/old/new/g`:将整个文件中的所有`old`替换为`new`。
- `:10,20s/^//g`:在第10行至第20行每行前面添加四个空格,实现缩进效果。
- `ddp`:交换光标所在行与其下一行的位置。
#### 八、移动命令
- `h`:向左移动一个字符。
- `l`:向右移动一个字符。
- `k`:向上移动一个字符。
- `j`:向下移动一个字符。
- `w`:向前移动一个单词(光标停在单词首部)。
- `b`:向后移动一个单词。
- `e`:同`w`,但光标停在单词尾部。
- `ge`:同`b`,但光标停在单词尾部。
- `^`:移动到本行第一个非空白字符上。
- `0`:移动到本行第一个字符上。
- `$`:移动到行尾。
- `gg`:移动到文件开头。
- `G`(Shift+g):移动到文件结尾。
- `f`(find):`fx`将找到光标后第一个为`x`的字符。
- `F`:同`f`,但反向查找。
- `Ctrl+e`:向下滚动一行。
- `Ctrl+y`:向上滚动一行。
- `Ctrl+d`:向下滚动半屏。
- `Ctrl+u`:向上滚动半屏。
- `Ctrl+f`:向下滚动一屏。
- `Ctrl+b`:向上滚动一屏。
#### 九、撤销与重做
- `u`:撤销上一次操作。
- `U`:撤销对整行的操作。
- `Ctrl+r`:重做,即撤销的撤销。
#### 十、删除命令
- `x`:删除当前字符。
- `3x`:删除当前光标开始向后的三个字符。
- `X`:删除当前字符的前一个字符。
- `dl`:删除当前字符。
- `dh`:删除前一个字符。
- `dd`:删除当前行。
- `dj`:删除上一行。
- `dk`:删除下一行。
- `10d`:删除当前行开始的10行。
- `D`:删除当前字符至行尾。
- `d$`:删除当前字符之后的所有字符(本行)。
- `kdgg`:删除当前行之前的所有行(不包括当前行)。
- `jdG`:删除当前行之后的所有行。
#### 十一、总结
VIM作为一款功能强大的文本编辑器,提供了丰富的命令集来满足不同场景下的编辑需求。通过本文介绍的基本命令和技巧,用户可以更加高效地使用VIM进行文本编辑工作。无论是简单的文本修改还是复杂的脚本编写,掌握VIM都将使你在日常工作中事半功倍。