vim操做笔记
阅读《vim使用技巧》记录笔记
-
vim -u NONE -N
-u NONE 标志让 Vim 在启动时不加载你的vimrc,这样,你的定制项就不会生
效,插件也会被禁用。当用不加载vimrc 文件的方式启动时,Vim 会切换到vi 兼
容模式,这将导致很多有用的功能被禁用,而-N 标志则会使能‘nocompatible’ 选
项,防止进入vi 兼容模式 -
>G
命令会增加从当前行到文档末尾处的缩进层级 -
.
微型宏,重复上次修,一键移动,一键执行 -
复合 等效命令 C
c$
s
cl
I
^i
S
^c
A
$a
o
A
CR
O
ko
-
f/F{char
查找,;
重复查找操作,,
反向查找 -
t/T{char}
查找,;
重复查找操作,,
反向查找,方标位于所要查找字符前一个 -
&
重复上次的:substitute
命令 -
*
命令,此命令可以查找当前光标下的单词,一是光标会跳到 下一个 匹配项上,二是所有出现这个词的地方都会被高亮显示出来。 -
daw
删除整个单词 -
C-a
和C-x
命令分别对数字执行加和减操作。在不带次数执行时,它们会逐个加减,但如果带一个次数前缀,那么就可以用它们加减任意整数。例如,如果我们把光标移到字符5 上,执行10<C-a>
就会把它变成15。但是如果光标不在数字上会发生什么?文档里说,C-a
命令会“把当前光标之上或之后的数值加上 [count]”(因此,如果光标不在数字上,那么C-a
命令将在当前行正向查找一个数字,如果找到了,它就径直跳到那里。我们可以利用这一点简化操作。 -
Vim 的语法只有一条额外规则,即当一个操作符命令被连续调用两次时,它会 作用于当前行。所以
dd
删除当前行,而>>
缩进当前行。gU
命令是一种特殊情况,我们既可以用gUgU
,也可以用简化版的gUU
来使它作用于当前行 -
命令 用途 c
修改 d
删除 y
复制到寄存器 g~
反转大小写 gu
转为小写 gU
转为大写 >
增加缩进 <
减小缩进 =
自动缩进 -
命令 用途 C-h
删除前一个字符 C-w
删除前一个单词 C-u
删除到行首 -
命令 用途 ESC
切换到普通模式 C-[
切换到普通模式 C-o
切换到插入-普通模式 -
插入模式下,
C-r
+register
,粘贴寄存器内容C-r
+C-p
+register
按原意插入文本,不包含任何格式 -
C-r
+=
表达式寄存器,可用于计算 -
C-v{123}
以十进制字符编码插入字符 -
R
普通模式进入替换模式,按照字符替换,gR
按照字符实际占用的宽度替换,r
+字母
替换一个字母 -
命令 用途 v
激活面向字符的可视模式 V
激活面向行的可视模式 C-v
激活面向列块的可视模式 gv
重选上次高亮区 -
C-v
时,不能用i
和a
进入到插入模式,需要使用I
和A
-
o
在可视模式下,切换活动端 -
命令 用途 :[range]delete[x]
删除指定范围内的行[到寄存器x中] :[range]yank[x]
复制指定范围内的行[到寄存器x中] :[line]put[x]
在指定行后粘贴寄存器x中的内容 :[range]copy(:t)[address]
指定范围内的行拷贝到{address}指定行之下 :[range]move(:m)[address]
指定范围内的行移动到{address}指定行之下 :[range]join
连接指定范围内的行 :[range]normal{commands}
对指定范围内的每一行执行普通模式命令{commangs} :[range]substitute/{pattern}/{string}/[flags]
把指定范围内出现{pattern}的地方替换为{string} :[range]global/{pattern}/[cmd]
对指定范围内匹配{pattern}的所有行,执行Ex命令{cmd} -
[range]范围格式,
start
,end
,.
代表当前行,$
代表最后一行,%
代表所有行 -
命令 用途 1
文件第一行 $
文件最后一行 0
虚拟行,位于文件第一行上方 .
光标当前行 'm
标记 m
所在行'<
高亮区起始位置 '>
高亮区结束为止 %
所有行,等价于 1,$
-
.
命令不会重复由 Vim 命令行中做出的修改。作为替代,我们可以用@:
来重复上次的 Ex 命令 -
在执行指定的普通模式命令之前,Vim 会先把光标移到该行的起始处。因此在执行时,用不着担心光标的位置。
:normal
命令则让我们可以把具有强大表现力的 Vim 普通模式命令与具有大范围影响力的 Ex 命令结合在一起 -
Ex命令行,
C-d
输出补全列表,tab
列表中选取,shift+tab
反向选取,先按C-d
,设置set wildmode=longest,list
后,tab
则按照bash shell方式工作 -
C-r + C-w
命令行插入光标下单词,C-r + C-a
命令行插入光标下字符串 -
set history=200
设置Ex命令行历史记录条数 -
命令 用途 q/
打开查找命令历史的命令行窗口 q:
打开ex命令历史的命令行窗口 C-f
从命令行模式切换到命令行窗口 -
配置文件中添加
cnoremap <C-p> <Up>
,cnoremap <C-n> <Down>
可实现在命令历史中进行上下切换 -
:shell
启动shell交互会话,:exit
退出,如果执行单句指令直接!{cmd}
即可 -
\c
与\C
控制查找时是否强制严格按照大小写查找 -
\v
与\V
控制查找是按照正则表达式,还是按照纯文本查找 -
分屏
<C-w> + s
水平 ,<C-w> + v
垂直分割