vim命令:输入模式
站内链接:
- vim 笔记(1)-命令-基本命令
- vim 笔记(2)-命令-ex 命令
- vim 笔记(3)-命令-map 映射
- vim 笔记(4)-命令-输入模式
- vim 笔记(5)-配置-通用配置和术语
- vim 笔记(6)-配置-neovim
Introduction
help vim-modes
基本模式
- 普通模式(Normal Mode):
这是 Vim 默认的模式,也是进入 Vim 编辑器时所处的模式。在普通模式下,按键被视为命令或者快捷键,用于移动光标、复制、粘贴、删除、查找等操作。在普通模式下,不能直接输入文本,要进入插入模式才能编辑文本内容。
- 使用
h
、j
、k
、l
分别向左、下、上、右移动光标。 - 使用
dd
删除当前行。 - 使用
yy
复制当前行。 - 使用
p
在光标后粘贴复制的内容。 - 使用
/keyword
进行搜索。
- 可视模式(Visual Mode):
在普通模式下按下 v
进入可视模式,也可以使用 V
进入行可视模式或者 Ctrl + v
进入块可视模式。可视模式用于选择文本块,可以方便地复制、删除、替换等。
- 按下
v
进入可视模式,然后移动光标来选择一段文本,选择完成后,可以按下y
复制选中的文本,按下d
删除选中的文本。
- 选择模式(Select Mode):
选择模式是 Vim 在 Windows 等支持可视模式的终端下的一种模式。在选择模式下,可以使用鼠标进行文本选择,类似于其他文本编辑器的选择方式。
- 插入模式(Insert Mode):
在普通模式下按下 i
、a
、o
等键进入插入模式。在插入模式下,按键会直接输入文本内容。这类似于其他文本编辑器的正常输入模式。
- 按下
i
进入插入模式后,可以直接在当前光标位置开始输入文本。
- 命令行模式(Command-Line Mode):
在普通模式下按下 :
进入命令行模式。在命令行模式下,可以输入各种命令来保存文件、退出 Vim、执行替换等操作。
- 输入
:w
保存文件。 - 输入
:q
退出 Vim。 - 输入
:s/old/new/g
进行替换。
- Ex 模式(Ex Mode):
Ex 模式是一种扩展的命令行模式,可以在文件中执行复杂的编辑命令。通常从命令行启动 Vim 后,输入 ex
或者 ex -s
就会进入 Ex 模式。
- 输入
:%s/old/new/g
执行全局替换。 - 输入
:g/pattern/d
删除所有匹配模式的行。
附加模式
操作符等待模式 该 (operator-pending) 模式与普通模式类似,但是在操作符
之后,Vim 等待一个动作 {motion} 以确定操作符的作用范
围。
替换模式 替换 (replace) 模式是插入模式的特殊情况。你可以做和插
入模式里相同的事情,但是你输入的字符会覆盖原先的字符。
见 |Replace-mode|。
如果置位了 'showmode' 选项,窗口底部会出现
"-- REPLACE --" 字样。
虚拟替换模式 虚拟替换 (virtual replace) 模式类似于替换模式,但你替
换的不是文件的字符,而是屏幕上占据的位置。见
|Virtual-Replace-mode|。
如果置位了 'showmode' 选项,窗口底部会出现
"-- VREPLACE --" 字样。
插入普通模式 在插入模式里输入 CTRL-O 可进入该 (insert normal) 模
式。与普通模式类似,但是只能执行一条命令然后返回到插入
模式。
如果置位了 'showmode' 选项,窗口底部会出现
"-- (insert) --" 字样。
插入可视模式 在插入模式里进行可视模式的选择,例如,在插入模式里键入
CTRL-O 然后键入 "v" 或 "V" 或 CTRL-V,可进入该 (insert
visual) 模式。可视选择结束时,返回到插入模式。
如果置位了 'showmode' 选项,窗口底部会出现
"-- (insert) VISUAL --" 字样。
插入选择模式 在插入模式里启动选择模式可进入该 (insert select) 模
式。例如,用鼠标拖拽或 <S-Right>。如果选择模式结束,
Vim 返回插入模式。
如果置位了 'showmode' 选项,窗口底部会出现
"-- (insert) SELECT --" 字样。
插入模式
大部分的 VIM 命令 都是在非插入模式下执行,插入模式一般用于文本输入。
插入-普通模式
该模式非常有用,但是经常忘记。 插入模式下的一个子模式。使用命令来进入该模式。
- 进入插入-普通模式:C-O
- 光标所在位置处于屏幕底部,想移动输入点到屏幕中间(非常常见): ESC + zz + o 或者 + zz +继续输入
Indentation
左缩进:Ctrl + D
右缩进:Ctrl + T
普通模式
Introduction
- 出发点:工程师大部分的时间都是在思考、阅读、浏览,复制、移动,仅仅进行少量的写入操作
- 一次操作:[前缀字符] + 操作符 + motion(动作命令)
- 语法规则:任何一个操作符命令被连续调用两次时,它会作用于当前行,例如>>、dd、gUU(即 gUgU)等命令
操作符待决
(Operator-Pending), 一个仅仅接收动作命令的状态,在调用操作符的时候被激活,之后等待后续的动作命令。
进入待决模式:操作数 + 待决模式 + {动作命令}, 例如 d + OPM + {motion}, gu + OPM + {motion}
终止待决模式: d + OPM + ESC
替换模式
说明:类似于 office word 中的 Insert 模式,替换光标所在的字符
命令:r/R/s/S
缩进
1 | 左缩进:< |
注意:如果没有使用后面的特殊语法,则缩进操作符后面必须紧跟动作命令,否则处于“操作符待决模式”下。
可视模式
Introduction
普通模式:operator + motion,先出发修改命令,在限定选区。
可视模式:motion + operator,先限定选区,之后执行命令(合理的三观啊)。
1 | " 说明:对选中的文本进行操作,大部分的命令同普通模式一样,例如h/j/k/l、f{char}、;/,重复f{char}、n/N查找等 |
选择模式
选择模式是另一种可视化模式,用于对选择的文本进行快速的删除和替换操作。
选中一段文本后,输入任何键会替换原有的所有选择字符,类似于 windows 下的选择模式。
1 | " 1 命令 |
命令行模式
Introduction
说明:按下 :进入命令行模式,在命令行模式中执行的命令称为 Ex 命令**
传承:ed 文本编辑—->ex 行编辑器—->vi(可视化)——->vim(vi improved)。
命令行窗口
- 普通模式到 ex 窗口: q: (非常棒的命令,查找过去的记录)
- 普通模式到 ex 历史记录: q/
- 命令行模式到命令行窗口:
范围
1 | n " 移动到光标的第n行 |
motion
1 | t " 复制文本 |
命令空间
功能:(自定义命名集)
说明:namespace 用于扩充可用命令的数目
结果:有点类似于对命令的命名归类,从而更加细化命令,扩充 vim 词汇量,对普通模式的扩充
查找模式
大小写敏感设置
1 | set ignorecase " 但是该命令的副作用非常大,例如影响自动补全行为 |
正则表达式
vim 默认的正则语法风格为 POSIX,如果想转为 perl/python 的正则表达式风格,可以使用 very magic 模式开关)
very-magic
假定除#、_、大小写字母、数字外的所有字符都具有特殊含义, 命令:
- posix 风格:/#([0-9]{3})用于匹配#03233
- vmagic 风格:/\v#([0-9]{3})
捕获子匹配
类此正则表达式,使用()进行子匹配的捕获操作,之后使用\1, \2, …, \9 来引用子匹配,\0 会引用整个匹配(并非子匹配)
原义查找文本
说明:目标文本可能存在某些正则语法的特殊符号,所以必须消除正则语法,使用 very nomagic 模式
匹配#a.b.*c 命令:/\V#a.b.*c