admin管理员组文章数量:1516870
目录
1 文件操作
1.1 在终端窗口中打开文件
1.2 操作文件
2 光标移动
2.1 行内移动
2.2 跨行移动
2.3 翻页和滚屏
2.4 标记
3 插入
4 撤销和重做
5 选取
6 删除
6.1 正常模式下
6.2 选取模式下
6.3 正则表达式下
7 复制
7.1 正常模式下
7.2 选取模式下
8 粘帖
9 查找和替换
9.1 普通查找
9.2 普通并替换
1 文件操作
1.1 在终端窗口中打开文件
| 命令 | 说明 |
| $ vim ~/mark.txt | 打开文件 |
| $ vim -R ~/mark.txt | 以只读方式打开文件 |
| $ vim ~/mark.txt ~/mark2.txt | 打开多个文件,显示第一个文件 |
| $ vim -O2 ~/mark.txt ~/mark2.txt | 打开多个文件,水平排列窗口 |
| $ vim -o2 ~/mark.txt ~/mark2.txt | 打开多个文件,垂直排列窗口 |
1.2 操作文件
| 命令 | 说明 |
| :e ~/mark.txt | 在vim中打开文件 |
| :tabnew ~/mark.txt | 在vim中新建标签页打开文件 |
| :w | 保存文件 |
| :w! | 强制保存文件 |
| :w ~/mark.txt | 以输入的文件名另存文件 |
| :q | 退出 |
| :q! | 放弃当前文件的修改,强制退出 |
| :qa! | 放弃全部文件的修改,强制退出 |
| :wq | 保存文件并退出 |
| :wq! | 强制保存文件并退出 |
| :e! | 放弃所有修改,回退到最后一次保存文件的状态 |
| :x | 保存文件并退出,只读文件需要用:wq!(作用相同) |
2 光标移动
2.1 行内移动
| 命令 | 说明 |
| h | 向左移动 |
| j | 向下移动 |
| k | 向上移动 |
| l | 向右移动 |
| 0 | 移动光标至行首,注意是数字0不是字母o |
| $ | 移动光标至行尾 |
| ^ | 移动光标至第一个非空字符 |
| g_ | 移动光标至最后一个非空字符首 |
| w | 移动光标至下一个单词的开头 |
| W | 移动光标至下一个单词(只考虑字母和数字)的开头 |
| b | 移动到当前单词的开头 |
| B | 移动到当前单词(只考虑字母和数字)的开头 |
| e | 移动光标至下一个单词的结尾 |
| 9l | 光标向后移动9个字符 |
| fa | 移动光标至下一个字符a |
| Fa | 移动光标至前一个字符a |
| 2fa | 向后移动光标至第2个字符a |
| 2Fa | 向前移动光标至第2个字符a |
| ta | 移动光标至下一个字符a之前 |
| Ta | 移动光标至前一个字符a之后 |
| 2ta | 向后移动光标至第2个字符a之前 |
| 2Ta | 向前移动光标至第2个字符a之后 |
2.2 跨行移动
| 命令 | 说明 |
| G | 移动光标至尾行行首 |
| gg | 移动光标至首行行首 |
| 9G | 移动光标至第9行行首 |
| 9gg | 移动光标至第9行行首 |
| :9 | 移动光标至第9行行首(需要按回车键) |
| H | 移动光标至可视区域首行行首 |
| M | 移动光标至可视区域中间行行首 |
| L | 移动光标至可视区域尾行行首 |
| zt | 把当前行移动到可视区域首行 |
| zz | 把当前行移动到可视区域中间行 |
| zb | 把当前行移动到可视区域尾行 |
| % | 移动光标至匹配的符号(前提是光标位于符号处,默认支持'()', '{}', '[]' ) |
2.3 翻页和滚屏
| 命令 | 说明 |
| Ctrl + f | 下一页,光标位于可视区域首行首个非空字符 |
| Ctrl + b | 上一页,光标位于可视区域尾行首个非空字符 |
| Ctrl + e | 向下滚动一行,光标不变或位于可视区域首行 |
| Ctrl + y | 向上滚动一行,光标不变或位于可视区域尾行 |
| Ctrl + u | 向上滚动半屏,光标不变或位于可视区域尾行 |
| Ctrl + d | 向下滚动半屏,光标不变或位于可视区域尾行 |
2.4 标记
| 命令 | 说明 |
| m{a-z} | 标记光标所在位置(局部标记,仅限于当前文件跳转) |
| m{A-Z} | 标记光标所在位置(全句标记,可用于跨文件跳转 |
| '{m} | 移动光标至标记m所在行首个非空字符 |
| `{m} | 移动光标至标记m所标记的位置 |
| :marks | 显示所有标记 |
| :delmarks {m} | 删除标记m |
| :delmarks! | 删除所有标记 |
3 插入
| 命令 | 说明 |
| i | 在光标所在字符之前插入 |
| I | 在光标所在行行首插入 |
| a | 在光标所在字符之后插入 |
| A | 在光标所在行行尾插入 |
| o | 在光标所在行的下一行行首插入 |
| O | 在光标所在行的上一行行首插入 |
| s | 删除光标所在字符,然后插入 |
| S | 删除光标所在行内容,然后插入 |
| cw | 删除从光标处开始到该单词结束的字符,然后插入 |
| ciw | 删除光标所在单词,然后插入 |
4 撤销和重做
| 命令 | 说明 |
| u | 撤销最近的修改 |
| 3u | 撤销最近的3次修改 |
| Ctrl +r | 重做最近撤销的修改 |
| 3Ctrl +r | 重做最近撤销的3次修改 |
| U | 恢复光标所在行至初始状态 |
5 选取
选取操作的流程可分为3步:
- 移动光标至开始位置
- 按v(正常选取)或Ctrl +v(块选取)进入选取模式
- 移动光标至结束位置
| 命令 | 说明 |
| v | 切换至正常选取模式 |
| Ctrl +v | 切换至块选取模式(允许在文本中选择一个矩形块,而不是常规的连续文本) |
6 删除
删除操作也会将删除的内容存入寄存器
6.1 正常模式下
删除的内容保存在默认寄存器(‘’)中
| 命令 | 说明 |
| dd | 删除当前行 |
| d0 | 删除行首至光标位置前的内容 |
| d$ | 删除光标位置至行尾的内容 |
| 3dd | 删除自当前行开始的3行内容 |
| x | 删除光标所在字符 |
| X | 删除光标之前的字符 |
| dw | 删除到光标所在单词的下一个单词开头 |
| dW | 删除到光标所在单词(包括标点符号)的下一个单词开头 |
| de | 删除到光标所在单词末尾 |
| dE | 删除到光标所在单词(包括标点符号)末尾 |
| db | 删除光标所在单词的光标前的内容 |
| dB | 删除光标所在单词(包括标点符号)的光标前的内容 |
| J | 删除当前行回车符 |
| 3J | 删除自当前行开始的3行回车符 |
6.2 选取模式下
可以指定保存删除内容的寄存器,同时默认寄存器也会保存删除的内容。
| 命令 | 说明 |
| d | 删除选取内容,保存到默认寄存器(") |
| ""d | 删除选取内容,保存到默认寄存器(") |
| "+d | 删除选取内容,保存到系统剪贴板寄存器(+) |
| "{0-9}d | 删除选取内容,保存到数字寄存器(0-9) |
| "{a-z}d | 删除选取内容,保存到数字寄存器(a-z) |
6.3 正则表达式下
| 命令 | 说明 |
| :g/^$/d | 删除空行 |
| :g/^\s*$/d | 删除包含空格的空行 |
7 复制
7.1 正常模式下
正常模式下,复制的内容保存在默认寄存器(‘’)中
| 命令 | 说明 |
| yy | 复制当前行 |
| y0 | 复制行首至光标位置前的内容 |
| y$ | 复制光标位置至行尾的内容 |
| 3yy | 复制自当前行开始的3行内容 |
| yw | 复制到光标所在单词的下一个单词开头 |
| yW | 复制到光标所在单词(包括标点符号)的下一个单词开头 |
| ye | 复制到光标所在单词末尾 |
| yE | 复制到光标所在单词(包括标点符号)末尾 |
| yb | 复制光标所在单词的光标前的内容 |
| yB | 复制光标所在单词(包括标点符号)的光标前的内容 |
7.2 选取模式下
可以指定保存复制内容的寄存器,同时默认寄存器也会保存复制的内容
| 命令 | 说明 |
| y | 复制选取内容,保存到默认寄存器(") |
| ""y | 复制选取内容,保存到默认寄存器(") |
| "+y | 复制选取内容,保存到系统剪贴板寄存器(+) |
| "{a-z}y | 复制选取内容,保存到字母寄存器(a-z) |
| "{0-9}y | 复制选取内容,保存到数字寄存器(0-9) |
8 粘帖
粘帖只能在正常模式下执行。
| 命令 | 说明 |
| P | 在光标之后粘帖默认寄存器(")的内容 |
| p | 在光标之前粘帖默认寄存器(")的内容 |
| "+P | 在光标之后粘帖系统剪贴板寄存器(+)的内容 |
| "+p | 在光标之前粘帖系统剪贴板寄存器(+)的内容 |
| "{a-z}P | 在光标之后粘帖字母寄存器(a-z)的内容 |
| "{a-z}p | 在光标之前粘帖字母寄存器(a-z)的内容 |
| "{0-9}P | 在光标之后粘帖数字寄存器(0-9)的内容 |
| "{0-9}p | 在光标之前粘帖数字寄存器(0-9)的内容 |
9 查找和替换
9.1 普通查找
查找只能在正常模式下执行。vim使用/和?区分正向和反向查找,使用封闭的尖括号(需要反斜杠转义)表示全词匹配,支持正则表达式,可以实现复杂的查找功能。
| 命令 | 说明 |
| * | 正向搜索光标所在单词并高亮显示,光标下移至搜索目标 |
| # | 反向搜索光标所在单词并高亮显示,光标上移至搜索目标 |
| /str | 正向搜索str(大小写敏感)并高亮显示,光标下移至搜索目标 |
| /str\c | 正向搜索str(大小写不敏感)并高亮显示,光标下移至搜索目标 |
| /str\C | 正向搜索str(大小写敏感)并高亮显示,光标下移至搜索目标 |
| /\<str\> | 正向搜索str(全词匹配)并高亮显示,光标下移至搜索目标 |
| /^str | 正向搜索以str开头的行并高亮显示,光标下移至搜索目标 |
| /str$ | 正向搜索以str结尾的行并高亮显示,光标下移至搜索目标 |
| /str_1\|str_2 | 正向搜索str_1或str_2并高亮显示,光标下移至搜索目标 |
查找到结果后,使用下面的命令可以在搜索结果中前后移动光标
| 命令 | 说明 |
|---|---|
| n | 光标后移至另一个搜索目标 |
| N | 光标前移至另一个搜索目标 |
| :noh | 取消高亮 |
9.2 普通并替换
查找替换的命令是s,其后是查找目标的正则表达式,紧接着是替换的内容,三者之间使用/连接。
| 命令 | 说明 |
|---|---|
| :s/str_old/str_new | 将光标所在行的首个str_old替换为str_new |
| :s/str_old/str_new/g | 将光标所在行的全部str_old替换为str_new |
| :s/\<str_old\>/str_new/g | 将光标所在行的全部str_old替换为str_new |
| :2,9s/str_old/str_new/g | 将2-9行的全部str_old替换为str_new |
| :2,$s/str_old/str_new/g | 将第2行至结尾的全部str_old替换为str_new |
| :%s/str_old/str_new/g | 将全文的str_old替换为str_new |
| :%s/str//gn | 统计str在全文出现的次数 |
版权声明:本文标题:Linux之Vim基本操作命令 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.betaflare.com/biancheng/1724514430a891189.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。


发表评论