Last active
December 26, 2020 05:40
-
-
Save tuchangwei/87aa7b7c483e4c49967b to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
1, 插入空行 | |
新发现一个命令, 使用点(.)重复上一个命令,如果是编辑代码或其他文本,需要插入很多空行, | |
可以这样子:先用o打开一个空行,然后ESC,接着就可以用.来操作了。每一次点.会在当前行的下面打开一个空行,并且不会进入编辑模式。 | |
2, | |
ddp 交换光标所在行和其下紧邻的一行。 | |
3, | |
d$ 删除当前字符之后的所有字符(本行) | |
4, | |
% : 匹配括号移动,包括 (, {, [. (陈皓注:你需要把光标先移到括号上) | |
* 和 #: 匹配光标当前所在的单词,移动光标到下一个(或上一个)匹配单词(*是下一个,#是上一个) | |
5, 举个例子就是你想复制一段双引号包含的文本,你就可以这样干 v-a-" | |
区域选择 <action>a<object> 或 <action>i<object> | |
在visual 模式下,这些命令很强大,其命令格式为 | |
<action>a<object> 和 <action>i<object> | |
action可以是任何的命令,如 d (删除), y (拷贝), v (可以视模式选择)。 | |
object 可能是: w 一个单词, W 一个以空格为分隔的单词, s 一个句字, p 一个段落。也可以是一个特别的字符:"、 '、 )、 }、 ]。 | |
假设你有一个字符串 (map (+) ("foo")).而光标键在第一个 o 的位置。 | |
vi" → 会选择 foo. | |
va" → 会选择 "foo". | |
vi) → 会选择 "foo". | |
va) → 会选择("foo"). | |
v2i) → 会选择 map (+) ("foo") | |
v2a) → 会选择 (map (+) ("foo")) | |
6, | |
块操作: <C-v> | |
块操作,典型的操作: 0 <C-v> <C-d> I-- [ESC] | |
^ → 到行头 | |
<C-v> → 开始块操作 | |
<C-d> → 向下移动 (你也可以使用hjkl来移动光标,或是使用%,或是别的) | |
I-- [ESC] → I是插入,插入“--”,按ESC键来为每一行生效。 | |
7, 替换(substitute): | |
3,7 s/xxx/yyy 把三到七行的xxx换成yyy,如不指定行号,则替换下一个 | |
8,复制粘贴 | |
1:yiw,复制单词 A | |
2:viw,选中单词 B | |
3:p,粘贴 | |
因为严格来说,yw 只有当当前光标处于单词的第一个字母时才是“复制整个单词”(包含末尾的空格) | |
,而 yiw 不管当前光标处于单词的哪个字母,都是复制整个单词(不包括末尾的空格) | |
9, 缩进 | |
按v锁定后按= | |
0 → 到行头 | |
^ → 到本行的第一个非blank字符 | |
$ → 到行尾 | |
g_ → 到本行最后一个不是blank字符的位置。 | |
fa → 到下一个为a的字符处,你也可以fs到下一个为s的字符。 | |
t, → 到逗号前的第一个字符。逗号可以变成其它字符。 | |
3fa → 在当前行查找第三个出现的a。 | |
F 和 T → 和 f 和 t 一样,只不过是相反方向。 | |
更快 | |
你一定要记住光标的移动,因为很多命令都可以和这些移动光标的命令连动。很多命令都可以如下来干: | |
<start position><command><end position> | |
例如 0y$ 命令意味着: | |
0 → 先到行头 | |
y → 从这里开始拷贝 | |
$ → 拷贝到本行最后一个字符 | |
你可可以输入 ye,从当前位置拷贝到本单词的最后一个字符。 | |
你也可以输入 y2/foo 来拷贝2个 “foo” 之间的字符串。 | |
简单替换表达式 | |
:[range]s/from/to/[flags] | |
range:搜索范围,如果没有指定范围,则作用于但前行。 | |
:1,10s/from/to/ 表示在第1到第10行(包含第1,第10行)之间搜索替换; | |
:10s/from/to/ 表示只在第10行搜索替换; | |
:%s/from/to/ 表示在所有行中搜索替换; | |
1,$s/from/to/ 同上。 | |
flags 有如下四个选项: | |
c confirm,每次替换前询问; | |
e error, 不显示错误; | |
g globle,不询问,整行替换。如果不加g选项,则只替换每行的第一个匹配到的字符串; | |
i ignore,忽略大小写。 | |
这些选项可以合并使用,如cgi表示不区分大小写,整行替换,替换前询问。 | |
Ctrl+u和Ctrl+d是上下翻半页 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
ddp如果写,删除此行,将下一行粘贴至此行,更好理解。