前段时间有些其他方面的事没有更新。趁着考试周,课程压力小的时候,补上之前的学习笔记。
转到Ubuntu了,感觉更符合年轻人的审美(哈哈,受对座大佬的影响
Vi命令
按键'i'代表insert,按下之后便可以进行插入文本块等操作。退出插入模式,按下'Esc'即可。在日常的操作中,当我们不知道自己处于那种模式中,可以连续按下两次'Esc',如果听到风鸣声,则代表我们处于命令模式。
单位操作
- h ——向左移动一个字符
- j ——向上一行
- k ——向下一行
- l ——向右移动一个字符
ps: 可以通过"number + command"的方式实现多单位操作。Ex: "4l"可以将光标向右移动四个单位,其余的类推。在书中被称为数字操作。
在一行中的操作
- $ ——移动到一行的结尾
- 0 ——移动到一行的开头(不是O,是zero,踩过的坑,命令O是增加空行
这里的一行可能和屏幕上显示的一行有区别,屏幕输出受命令行的字符宽度限制。可以在底线命令模式下,输入set:nu显示行号。
按文本块移动
- w ——向后移动一个文本块,符号和标点算一个单独的文本块
- W ——向后移动一个文本块,不算符号和标点
- b ——向前移动一个文本块,符号和标点算一个单独的文本块
- B ——向前移动一个文本块,不算符号和标点
ps: 同样的,可以用"number + command"的方式实现多单位操作。不再赘述。
更改文本
需要替换文件中的文字时,可以用更改命令c来告诉编译器需要更改多少。Ex:
- cw ——光标到这个单词结尾
- c2b ——光标到光标前两个单词
- c$ ——光标到本行结尾
- c0 ——光标到本行开头
ps: cw也可以更改单词的一部分,例如需要将spelling修改成spelled,可以将光标移到"i"上,再"cw",之后输入"ed",最后按下"Esc"进入命令行。
对于整行操作,vi提供了一个很方便的命令"cc",在输入之后会暂时用一个空行来代替,直到按下"Esc"进入命令行。
当我们需要对单个字符进行更改时,比如修改大小写之类,我们会用命令"r",Ex: 将with中的首字母大写,首先将光标移动至"w"上,再按下"rW",就替换完成啦。
删除文本
删除单词我们用"dw",需要将光标移动至需要更改的单词上,"dw"也可以删除单词的一部分,可以与"cw"操作类比。
删除整行我们用"dd"或者"D",但各自的功能有所不同。"dd"与"cc"类似,是一种形式特殊的命令。(至于咋特殊了,一般vi中的命令是 {{command} {number} {object}} 的格式)"D"只会删除该行光标以后的部分。多行删除为"number + dd"。
删除字符我们用"x",将光标移动至需要删除的字符上方。
关于撤销操作会在以后的学习笔记中详细更新。
移动文本
在vi中,采用“先删除再放置文本”的方式实现文本移动,原理类似"cut" 和 "paste" 。
放置文本的命令"p",会将缓冲区的文本放在光标之后,而"P"会将缓冲区的文本放在光标之前。如果移动了一行以上的文本,p命令把移动的文本放在光标后的新一行或者很多行,如果你移动的文本不到一行,那么p命令会移动到光标之后的同一行。
如果我们只想删除一个字符或者多个字符,那么首先进行的操作是"x"或者"number + x",接着仍然是"p"。
复制文本
复制文本所用的命令为"y","yy",表示复制一整行,与删除和更改不同的是,"Y"的含义与"yy"完全一致,并不存在从该光标到最后的操作,但我感觉可以用"y$"命令来实现这一功能,常见的和其他光标移动命令组合的还有"yw"、"yb"、"y0"等。
重复或撤销上一个命令
是上一个命令,一个,一个,踩过的坑说三遍。在vim中使用的时候,发现是可以连续撤回的。amazing!
"." ——重复
"u" ——撤回
"U" ——将一整行恢复原样,若此时光标在其他行则无效
其他有用的命令
"O" ——在光标前插入空行
"o" ——在光标后插入空行
"A" ——在一行结尾处附加文本
"I" ——在一行开头附加文本
"s" ——删除光标所在位置的字符后,再进行文本替换
"S" ——删除一整行后再替换文本
"R" ——用新的字符覆盖现有字符