- 目录
normal 模式下插入与删除
- i:示在光标的位置插入,I:从该行最前面开始编辑
- a:在光标后的位置插入,A:从从该行最后面开始编辑
- o:在当前的下一行插入,
- x:删除光标后的一个字符
- dd:删除整行
- dw:删除光标后面的单词
- diw:删除光标所在的单词,但不包括单词旁边的空格
- daw:删除光标所在的单词,包括单词旁边的空格
- di+
- u:撤销
- ctrl+r:取消撤销
在编辑模式下,在我们本次编辑修改的部分,我们可以使用快捷键去修改字符
- ctrl + h:删除光标前面的字符
- ctrl + w:删除光标前面的单词
- ctrl + u:删除光标前面的该行所有内容
光标移动
- w:向前移动到下一个单词的第一个位置,3w等同于按下三次w,W:只使用空格作为分隔
- e:向前跳动到下一个【单词的末尾】
- b:向后移动到上一个【单词的开头】
- ge:向后移动到上一个【单词的末尾】
- %:找到当前光标 下或者之后 的第一个括号,并移动到它匹配的括号的位置 括号包括:([{}]), /*, */ ,#if, #ifdef, #else, #elif, #endif
-
<f+字符>:移动到行内当前光标后面的第一个这个字符
-
<t+字符>:移动到行内当前光标后的的第一个这个字符的前一个位置
-
<F+字符>:【f+字符】的反向
-
<T+字符>;【t+字符】的反向
- $ :移动到行的末尾
- 0 :移动到行的开头
- ^ :移动到第一个非空白字符
- g_: 移动到最后一个非空白字符
-
<Ctrl-b> :向下移动一个屏幕
-
<Ctrl-f> :向上移动一个屏幕
- <Ctrl-u> :向下移动半个屏幕
-
<Ctrl-d> :向上移动半个屏幕
-
Ctrl-w w:在不同窗口中切换光标
常用复制命令:
- yy :复制游标所在行整行
- 2yy或y2y: 复制 2 行
- y^:复制至行首,或y0
- y$:复制至行尾
- yw:复制一个word
- y2w: 复制两个word
- yG:复制至文件尾
- y1G:复制至文件首
- 选中文本进行复制:要选中内容进行复制,先在命令模式下按 v 进入 Visual Mode,然后用方向键 或 hjkl 选择文本,再按 y 进行复制。
常用剪切命令:
- dd 剪切游标所在行整行
- d^ 剪切至行首,或d0
- d$ 剪切至行尾
- dw 剪切一个word
- dG 剪切至文件尾
- 选中文本进行剪切:要选中内容进行复制,先在命令模式下按 v 进入 Visual Mode,然后用 方向键 或 hjkl 选择文本,再按 d 进行剪切。
normal模式下快速修改 常用的有三个:
- r:(replace)可以替换一个字符
- s:(change)删除当前字符并且进入插入模式
- c:(substitute)可以配个文本对象快速修改一个单词,cw,ciw,caw只不过是在dw,diw,daw删除的基础上同时进入插入模式。
vim的查询操作,查询单词也是一个常用的操作
- /:前向搜索,使用n/N跳转到下一个/上一个的匹陪对象,例如/time表示搜索time这个单词,按n表示下一个。
- ?:反向搜索
- 使用*/#进行匹配,光标在一个单词上,*/#表示上一个/下一个同样的单词
\命令 后边不要加空格 否则会报警 如果非要加则使用 \命令{}
查找与替换
参考这篇博文 关于在vim中的查找和替换 - 亲爱的不二999 - 博客园
Vim查找支持正则表达式,例如/vim$
匹配行尾的"vim"
。 需要查找特殊字符需要转义,例如/vim\$
匹配"vim$"
。
在normal模式下按下*
即可查找光标所在单词(word), 要求每次出现的前后为空白字符或标点符号。
:s
(substitute)命令用来查找和替换字符串。语法如下:
:{作用范围}s/{目标}/{替换}/{替换标志}
正则表达式
正则表达式 : <range>s/<查找的内容><元字符>/<替换内容>/<flags>
flags
有如下四个选项:
c
confirm,每次替换前询问;e
error, 不显示错误;g
globle,不询问,整行替换。如果不加g
选项,则只替换每行的第一个匹配到的字符串;i
ignore,忽略大小写。
元字符:vim查找替换及正则表达式的使用 - Cooper's Blog (tanqisen.github.io)
- 将{...}替换为<...> 括号之间的内容不变 :
s/{\(.*\)}/<\1>
粘贴板
vim有12个寄存器,分别是0、1、2、...、9、a、“、+ 用:reg命令可以查看各个粘贴板里的内容
将vim的内容复制到某个粘贴板,需要退出编辑模式,进入normal模式后,按 "Nnyy 完成复制。注意第一个引号 " 不可少,其中N为寄存器),n为你想要复制的行数,例如要把当前以下11行内容复制到粘贴板a,则只需按 "a11yy 就可以了,在需要粘贴的文件按 “ap 即可,其他寄存器类似。
+号(或*号)粘贴板是 系统粘贴板,用 "+y 将内容复制到该粘贴板后可以使用Ctrl+V将其粘贴到其他文档中,同理,要把在其他地方用Ctrl+C或右键复制的内容复制到vim中,需要在命令模式下按 "+p;
normal模式下: | 可视模式: |
"+nyy | "+y |
"+p | "+p |
插入空格
两个quad空格 | a \qquad b | ![]() | 两个m的宽度 |
quad空格 | a \quad b | ![]() | 一个m的宽度 |
大空格 | a\ b | ![]() | 1/3m宽度 |
中等空格 | a\;b | ![]() | 2/7m宽度 |
小空格 | a\,b | ![]() | 1/6m宽度 |
没有空格 | ab | ![]() | |
紧贴 | a\!b | ![]() | 缩进1/6m宽度 |
标记跳转
'' 回跳刚才的出发点
m(a...z) 给当前行标记
'a 跳转到标记a的行
:marks 查看当前所有标记
:delm! 删除所有标记
Visual模式按块选择
先按v,进入visual模式,横向选中列的个数(如选中两列),再按ctrl+v 进入列编辑模式,向下或向上移动光标,
切换标签页
normal 模式
- gt 向前切换
- gT向后切换
- ngt/ngT 直接切换到第n个标签页
命令模式
- :tabnew [++opt选项] [+cmd] 文件 建立对指定文件新的tab
- :tabc 关闭当前的tab
- :tabo 关闭所有其他的tab
- :tabs 查看所有打开的tab
- :tabp 前一个
- :tabn 后一个