operator
和动作motion
。operator
看作动词,motion
看做名词。# 查看操作符
:h operator
动作 = 移动光标的命令
或
动作 = [数字] + 移动光标的命令
# 数字表示移动次数,默认为1
# 查看motion帮助文档
:h motion.txt
:h motion
operator
和motion
结合实现Vim操作的语法如下[数字] + 操作符 + [数字] + 动作
# 第1个数字表示执行(操作符 + [数字] + 动作)的次数,默认为1;第2个数字表示执行动作的次数,默认为1
# 比如2d2w表示执行2次d2w,d2w表示删除2个词(包括词后面的空格)
此时,operator表示要执行的操作(比如删除d,修改c,复制y等),motion表示该operator能操作的范围(比如2w表示能对2个单词执行该操作)。简而言之,操作符用来告诉Vim我要做什么操作,动作用来告诉Vim我要操作的具体范围(对哪部分文本进行操作)。
[数字] + 操作符 + [数字] + 操作符
# 前后两个操作符一样。
# 第一个数字表示执行"操作符 + 数字 + 操作符"的次数,默认为1。
# 第二个数字为从当前行开始,向下操作的行数(包括当前行),默认为1
行操作时,用数字来控制该操作符能操作的范围。
y2y复制2行,d3d删除3行,2c3c删除6行并进入插入模式(等价于c6c),>5>右缩进5行等。使用行操作有时候可以在不使用行可视行模式的情况下,对多行进行批量操作。
动词 + 名词
动词用来表示具体执行什么操作(比如删除,修改,复制等),名词用来限制该动词操作的范围。
# operator为动词,motion为名词
公式一: [数字] + operator + [数字] + motion
公式二: [数字] + operator + [数字] + operator
# operator为动词,text-object为名词
[数字] + operator + [数字] + text-object
核心:只要掌握了operator、motion和text-objects,就可以使用不同的operator和不同的motion或text-object进行组合使用,从而实现无尽的操作。A buffer is the in-memory text of a file.
A window is a viewport on a buffer.
A tab page is a collection of windows.
:buffers
:ls
:files
:bnext # 切换到下一个buffer
:bprevious # 切换到上一个buffer
:buffer + n # n是buffer编号
:buffer + 文件名 # 切换到指定文件名的buffer
:bdelete + 文件名/buffer编号 # 删除
ctrl-^ # 跳到先前编辑过的buffer
:xall # 保存并退出所有的buffer
:wall # 保存所有buffer
:wqall # 保存所有buffer并退出
:qall # 关闭所有buffer,但是不报存变更
:h window
:sp # 水平分割
:vs # 垂直分割
:new # 创建新文件并打开
更多窗口内容请参考下文中多窗口编辑.
:tabs # 查看tab数
:tabnew # 新建tab
:tabclose # 关闭当前tab
:tabnext # 切换至下一个tab
:tabprevious # 切换至上一个tab
:tablast # 切换到最后一个tab
:tabfirst # 切换到第一个tab
gt # 切换到下一个tab
gT # 切换到上一个tab
n + gt # 切换到编号n的窗口
-p
。Esc # 其他模式切换到普通模式
Ctrl+[ # 其他模式切换到普通模式
gi # 从其他模式快速跳转到最后一次编辑的地方并进入插入模式
# 在配置文件vimrc文件里面添加
inoremap jk <esc>
打开文件光标快速跳转到上一次编辑的位置:打开文件,之后按下gi