vim 编辑器学习
VIM简介
vimVim是从vi发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。和Emacs并列成为类Unix系统用户最喜欢的编辑器。
Vim的第一个版本由布莱姆·米勒在1991年发布。最初的简称是Vi IMitation,随着功能的不断增加,正式名称改成了Vi IMproved。现在是在开放源代码方式下发行的自由软件。 ——[维基百科](https://zh.wikipedia.org/wiki/Vim)
1.进入vim编辑器
可以使用终端输入:`vim`回车进入vim编辑器
vim2.基础命令
- `i` insert模式,这个类似文本编辑器,你可以在上面输入任何想输入的内容,按住`Esc`键可以退出这个模式,返回到Normal模式。下面是我插入的内容。
- `x` 删除当前光标所在的字符,并将字符存在粘板中
- `dd`删除当前行,并且把删除的行存在粘贴板
- `p` 将剪贴板里的命令粘贴在当前行
- `wq` 存盘+退出 (后面可以跟文件名) 这个命令相当于 `w` :存盘和`q`:退出
- `h、j、k、l`这四个命令就相当与键盘的左下上右键,来移动光标,需要在Normal模式中使用
3.插入模式
- `a` 在光标后面插入内容
- `o` 小写的o在当前行的后一行插入内容
- `O`大写的O在当前行的上一行插入内容
- `cw` 替换从当前位置到单词结束的字符
4.移动光标
- `0` 数字的零,移动光标到当前行的行头。
- `^` 到当前行除过空格,tab键,换行键,回车键等(blank字符)的行头。
- `$` 移动光标到当前行的行尾
- `g_` 到当前行除过空格,tab键,换行键,回车键等(blank字符)的行尾。
- `/int` 搜索`int`这个字符串在当前文本的位置。(如果查找多个,按回车后用`n`键切换下一个)
5.复制/粘贴
- `p/P` 在当前光标的前/后粘贴内容。
- `yy` 复制当前行的内容。
6.撤销和反撤销
- `u` 撤销你刚才做的操作(undo)
- `ctrl+r` 反撤销(Redo)
7.打开、保存、退出、改变文件
- `:e <路径+文件名称>` 打开一个文件
- `:w` 存盘
- `:x、:wq、ZZ` 这三个命令都是保存并推出,最后面的`ZZ`是大些的Z 不需要输入`:`
- `:saveas <路径+文件名称>` 将当前文件另存为
- `:q!` 退出不保存,
- `:qa!` 强行退出正在编辑的文件,就算别的文件有更改。
- `:bn、:bp` 当你用`:e <路径+文件名称>`打开新的文件时 可以用`:bn`切换上一个文件`:bp`切换下一个文件
8.提升
- `. ` (小数点) 可以重复上一次的命令
- `数字N+命令` 可以命令执行N次,例如`dd`后,进行`4p`会将粘贴板的内容粘贴4次。
- `数字N+G` 跳转到第N行。
- `:N` 也可以直接跳转到指定行
- `gg` 直接跳到第一行
- `G` 直接跳到最后一行
- `w` 跳转到下一个单词的开头
- `e` 跳转到下一个单词的结尾
- `W` 跳转到以blank字符分隔符的开头
- `E` 跳转到以blank字符分隔符的结尾
- `%` 匹配括号移动,移动到当前位置最近的括号,包括 `()` `{ }` `[ ]`
- `*`和`#` 寻找和当前光标所在位置相同的单词,`*`下一个,`#`上一个
9.更快
- `v` 选择代码块,然后可以进行下面的操作
- `d` 删除,可以配合上面`v`来使用
- `gu` 将光标所在行的字母变成小写
- `gU` 将光标所在行的字母变成大写
10.在当前行移动光标(字符C:代表任意字符)
- `f+字符C`从光标位置找到下一个为C的字符处
- `F+字符C` 从光标位置找到上一个为C的字符处
- `t+字符C`从光标位置找到下一个为C的字符的前一个位置的字符
- `T+字符C`从光标位置找到下一个为C的字符的后一个位置的字符
11.自动提示
`ctrl n`或者`ctrl p`自动代码提示功能
12.可视化选择:
- `J` 把所有的行连接起来,变成一行
- `<`和`>` 左右缩进
- `=`自动给缩进
- `ctrl+v`选中多行可使用`j`等命令,然后`$`到最后,`A`输入字符串后按`ESC`
13.分屏
`:split` 创建分屏
`:vsplit`创建垂直分屏
`ctrl+w + 方向键` 用来切换分屏
`ctrl+w_`或者`ctrl+w|` 最大化尺寸
`ctrl+w 和 +`或者`ctrl+w + -`增加尺寸
---
参考的学习资料是陈皓老师的[简明 VIM 练级攻略](https://coolshell.cn/articles/5426.html/comment-page-11#comment-1906176) 。