vim使用
由normal模式进入insert模式
i在当前文字前面插入- a 在当前文字后边插入
- o 在当前行的下一行插入
- I 在当前行前方插入
- A 在当前行后方插入
- O 在当前行上一行插入
### vim中的模式
| mode | 作用 |
|---|---|
| insert | 插入模式 |
| normal | 控制光标的移动 |
| 命令模式 | :命令 进行vim的命令,横竖分屏,查找,替换什么的 |
| visual | 可视化 进行块状的选择 normal v键进入 使用V选中行 ,ctrl+v 进型方块的操作 |
注意:默认情况下是normal模式
insert模式
- normal模式本质就和普通的编辑器一样
- 快捷键
- CTRL+H 删除上一个字符
- CTRL+W 删除上一个单词
- CTRL+U 删除当前行
- 粘贴使用CTRL+V 由于自动设置autoindent 所以缩进会乱掉
- 设置:set paste 此时自动缩进不起作用
- 设置 :set nopaste 解决,此时自动缩进起作用
command模式
- syntax on 打开语法高亮
normal模式
- w 跳转到下一个单词开始
- e 跳转到下一个单词结尾
- b 跳转到上一个单词开头
- W 跳转到下一个以空白符分割单词行首
- E 跳转到下一个以空白符分割单词行尾
- B 返回到上一个以空白符分割单词行首
- f{字母} 行间搜索字符,跳转到字符首
- , 跳转上一个
- ; 跳转下一个
- t{字母} 行间搜索字符,跳转到字符的前一个单词
- F 字母 反向搜索
- T 字母 反向搜索
- 0 移动到行首第一个字符
- ^移动到第一个非空白字符 前面不可加数字
- g_ $移动到行尾非空白字符 前面可以加数字
- gg 或者 G 移动到文件的开头和结尾
- CTRL+O 移动到上一个位置
- H 跳转屏幕开头
- M 跳转屏幕中间
- L 跳转屏幕结尾
- ctrl+u 上翻页
- CTRL+F 下翻页
- zz 将当前行放置在屏幕中间
- dw daw 删除一个单词,包括他周围的空格
- diw 删除一个单词,不包括他周围的空格
- dtx 删除到指定位置,但是不删除x
- d 后边可以拓展好多标记符
- 比如 d0 表示向前删除到行首
- d^表示向后删除到行尾
- 数字+命令 多次执行此命令
- 3dd 删除三行
- 3x 删除三个字母
- 3dw 删除三个单词
- r(replace) 替换光标处的字母
- s(subtitude) 删除光标处的字母并进入插入模式
- : 范围 s/搜索的字符/替换的字符/flag 进行替换操作
- 标志位
- g 表示全局范围内执行
- c 表示确认
- n 报告匹配到的次数,而不进行替换
- e 标记 找不到不是错误
- 标志位
- : 范围 s/搜索的字符/替换的字符/flag 进行替换操作
- c(change) 删除当前并进入插入模式,删除的操作和d一样,区别就是进入了插入模式
- R 不断替换后面的字符
- S 删除整行并进入插入模式
- /单词 向下查找
- ?单词 向上查找
- n跳转到下一个,N跳转到上一个
- dd 删除一行
- x 删除一个字符
- y 复制
- p 粘贴
- t 剪贴
- y同样是一个命令,可以搭配文本对象来用
- yy 复制一行
visual模式
- v 选中移动的东西
- V 选中行
- CTRL+V 选中矩形
- 选中之后 按 d 或 x 可将选中的东西删除
- “>” 命令把选中的文档向右移动一个 “平移单位”,中间用空白填充。平移的起始点是可
视列块的左边界。 - “<” 命令向左移动一个 “平移单位”
### 多文件操作
- 使用:ls 列出当前缓冲区,用:b n 跳转到第n个缓冲区
- :bpre :bnext :bfirst :blast 进行缓冲区的跳转
- b 文件名 跳转到指定的文件
- :sp 水平分割
- CTRL+W 切换到下一个窗口
- :vs 垂直分割
- :close 退出窗口.防止在退出时推出了vim
- :only 关闭其他窗口
- :split 2.cpp 打开其他窗口
- CTRL+W + 扩大窗口 这只是缩放
- CRTL+W - 缩胸啊窗口
- 4split 使得多开的窗口只有4行
- CTRL+W+移动符 移动到相应的位置
- 命令行界面:vimdiff 1.cpp 2.cpp 比较两文件的不同 zo 打开折叠 zc 关闭折叠
- :vertical diffsplit main.c~ 在分割窗口的条件下比较两文件的不同
- :set noscrollbind 取消鼠标滚动时两窗口同步滚动
- ]c 跳转到下一个修改点
- ]c跳转到上一个修改点
- :diffupdate 更新修改后的差异比较
- :3read filename 将指定文件内容添加进入指定范围的后面
- :3write filename 将指定文件的3行保存
文本对象
- w 单词
- p 段落
- s 句子
- 次数 命令 文本对象
### 寄存器的操作
删除的东西保存到无名寄存器中,粘贴也是从无名寄存器中选取
“寄存器名称 来指定寄存器
+号代表系统剪切板
:set clipboard=unnamed 设置可以从系统剪贴板复制粘贴
宏
- q寄存器录制 q停止
- q 寄存器选择保存的寄存器
- @寄存器 回放宏
补全

image-20200304163607240

image-20200304165323662
配置和插件
- 就是vimrc的配置文件
### vim的映射
- 就是自定义的那些按键
- unmap可以取消映射
- vmap表示可视化模式下的操作
- \ 代表的是大写
- 注意按键的冲突形成递归映射
- 非递归映射
- noremap
- vnoremap
- inoremap
- 最好使用非递归映射
vim插件
- 插件搜索
- 谷歌搜索 用英文
- vim plug
- 谷歌搜索 用英文
- vimawesome网站标记 含义
按退出键
按回车键,也写作
按控制键
按制表键
按切换键
同时按 和
按上光标键
按下光标键
␣ 按空格键 - vim -u NONE -N 在启动时不启动vimrc
技巧1
- . 重复执行上一次的操作
- “>” 两个空格
### 技巧2
### 通过文档发现的指令
- ZZ 保存并退出
- zz 将当前行移动到屏幕中央
- :e! 重载原来的文件进行编辑
- % 进行括号匹配
- 50 % 代表移动到文件中间
- Ctrl+U Ctrl+D 向上或者下滚动半屏
- Ctrl+F CTRL+B 向上或者向下滚动全屏
- zt zb 当前光标所在行移动到屏幕顶部或者底部
- set ignorecase 忽略大小写的打开和关闭
- >“ 是一个特殊的记号,表示只匹配单词末尾。类似地,”<“ 只匹配单词的开头
- :set incsearch 一边输入,一边匹配
- crtl+ o 跳转到较老的地方 ctrl+i 跳转到较新的地方
- m26个字母 标记当前位置
- ‘标记位置 移动到标记的位置
- ~ 改变大小写
- set wildmenu 设置自动补全
- syntax on 打开语法高亮
- set autowrite 自动保存文件
- set backup 设置备份文件
- set backupnext=xx 设置自己喜欢的备份文件名称
- “fy 拷贝 “fp 粘贴
- :write>>文件名 以追加的方式导入文件中
- vim -R file 以只读的方式打开一个文件 但是在:w 后面添加一个!还是会被接受
- vim -M file 打开文件时是只读的,但是限制仍然可以被解除
- :set modifiable :set write 解除保护
- :set textwidth=72 每行72个单词自动换行.如果只是在行中间输入或删除一些东西,这个功能就无效了
- gq 文本对象 表示文本对象之间的分隔符为空行
- g CTRL+G 统计字数