VIM基础

1.移动

基础

字符移动

k            上移                k
h            左移            h        l
l            右移                j
j            下移

你也可以使用键盘上的方向键来移动,但这么做h j k l的存在就失去了意义,之所以使用h j k l来控制方向,其主要目的是让你的手不离开键盘中心,从而提高效率
tips:在命令前加上数字代表命令执行次数,如:5k,表示上移5行

单词移动

W w            移动到下一个单词开头
E e            移动到下一个单词结尾
B b            倒退到上一个单词开头

需要注意的是,E会忽略标点符号,如:I‘m,e会当成两个单词,E则不会同样,在命令前加上数字代表执行次数,如:2w,表示往下移动2个单词开头我也许会多说几遍,因为这个技巧很重要

整行移动

0            移动到行首
$            移动到行末 
+            移动到下一行开头 
-            移动到上一行开头

这里需要注意的是+ -和上面的j k有什么不同之处
j k也是移动到上一行和下一行,但它们移动的是光标所在的位置

  • -不管你的光标在何处,总是移动到下一行或上一行的行首

进阶

滚屏

Ctrl+f            往前滚动一整屏
Ctrl+b            往后滚动一整屏
Ctrl+d            往前滚动半屏
Ctrl+u            往后滚动半屏
Ctrl+e            往后滚动一行        
Ctrl+y            往前滚动一行

看似比较多,但是可以根据键盘的位置来进行记忆,并且下面两个也不常用,上面的滚屏都有一个共同点,就是会改变光标的位置,且屏幕也在改变

如果想让光标维持在原来的位置实现滚屏请看下面
用z调整光标

z<Enter>        将光标所在行移动到屏幕顶端
z.              将光标所在行移动到屏幕中间
z-              将光标所在行移动到屏幕低端

tips:980z<Enter>可以将第980行移动到屏幕顶端

好吧,有时候你其实不想滚屏,你只想在当前屏幕中移动

请往下看

在屏幕中移动

H            移动到屏幕顶端的行
M            移动到屏幕中央的行
L            移动到屏幕底端的行

nH           移动到屏幕顶端往下的第n行
nL           移动到屏幕顶端往上的第n行

据我猜测这三个字母应该是HIgh、Middle和Low的缩写,其实挺好记的
多练习几遍就行了,需要注意的是:这里只是光标的位置变化,和上面两种不同

tips:你可以用+ -和j k实现同样的位置变化,只不过要操作多次而已

在当前行移动

^             移动到当前行的第一个非空格处
n|           移动到当前行的第n列</pre>

这里的^与上面的0通常情况下表示的位置是一样的

而n|,个人感觉还没有h l方便,慢慢的数出行数还不如直接按着h l 左右移

根据文本块移动

所谓的文本块也就是句子、段落、小节等

(            移动到当前句子开头
)            移动到下一个句子开头
{            移动到当前这一段开头   
}            移动到下一段开头
[[           移动到当前这一节的开头
]]           移动到下一节的开头

其中,VIM以? . !等符号来标记一个句子

空白行来标记一个段落

用节宏来标记一个节(节宏是什么我还没搞清楚)

根据行号来移动

Ctrl+g            显示当前行信息
nG                转至第n行
G                 转至文本末尾
gg           移至文本开头

如果你不知道当前是多少行的话就可以用Ctrl+g来查看
如果想转到第800行,可以用800G

其实z命令也可以做到,并且把光标移动到第一行

tips:``反引号可以返回到使用G之前的位置

2.插入

基础

字符位置插入

i            在光标之前插入
a            在光标之后追加

进阶

行位置插入

A            在一行的结尾处追加
I            在一行的开头处插入
o            在光标所在位置的下一行打开新行插入
O            在光标所在位置的上一行打开新行插入

它们是以行做单位

合并行
    

image

合并两行
J
    

image

你只需要把光标移动到首行,然后按3次J即可

3.删除

字符删除

x            删除光标所在处字符
X            删除光标所在前字符

单词删除

dw            删除到下一个单词开头
de            删除到本单词末尾
dE            删除到本单词末尾包括标点在内
db            删除到前一个单词
dB            删除到前一个单词包括标点在内

很明显,d是delete的缩写,而上面的x则是老式的清除意思

这里e表示往前删除一个单词,b表示往后删除一个单词,第一节中移动写的很清楚

要注意的是e b会忽略标点,如don't,它们会把这当做三个单词don、‘ 和 t 来删除

而大写的E B则不会

行删除

dd 删除一整行
D d$          删除光标位置到本行结尾
d0            删除光标位置到本行开头

这三种用法是最好理解的

我一开始便说过,删除命令需要配合移动命令才能发挥更多作用

你可以看看第一节内容,然后自己尝试着删除一节或一段内容等

**3dd代表删除三行

4.修改

字符替换

r            单个字符替换
R            连续替换
~           更改大小写

tips:4~更改连续4个字符的大小写,很有意思

单词修改

cw            从光标处修改到单词结尾
cb            从光标处修改到单词开头

这里直接使用cw或cb操作很简单,要注意的是加数字的使用方式

此时2cw 或者 c2w都可以使用,功能一样

行修改

c$            从光标修改到本行末尾
C             功能同上
c0            从光标修改到本行开头
cc            删除整行从头修改
S             功能同上
s             删除光标所在位置的字符,然后插入

这里有点难记,主要是多练习才能看到效果

其中,c和C功能是一样的,都是从光标修改到行尾,d+a达到相同效果

c0和d0+i效果一样,区别是少输入一次

cc和S效果也是一样,其实S是属于插入的范畴,这里类似,所以一起讲了

再来是s,它会删除光标处的字符再插入,效果等同于x+i或c+space

多行修改我想就不用说了,前面加上数字再组合命令就可以了

从上面看来,我们应该可以更深刻的认识到,VIM中大部分命令是组合使用的

利用好了这点才能更快的摸索出自己的使用习惯,从而高效修改

5.复制

在讲复制之前我要先说一个简单到不行的命令

粘帖

p            粘帖

单词和字符复制

ynl            向右复制n个字符
ynh            向左复制n个字符
ynw            向前复制n个单词
ynb            向后复制n个单词

由于复制操作通常是在量比较大的情况下进行

所以这里我使用了n代替需要操作的个数

需要说明的是,这里看起来并没有多大意义

因为复杂字符和单词还没有直接插入的方式来的快

行复制

y0            复制到行首
y$            复制到行末
yy            复制整行
yH            从当前行复制到屏幕顶端
yL            从当前行复制到屏幕低端

这里前两条用的也比较少

但是整行或多行复制才是yy的方便之处

1. 4yy也就是复制4行
2.y几乎可以跟任何光标移动命令结合,不信你试试

剪切

说完了复制这里顺便把剪切的命令也说下

其实剪切很简单,就是先删除,然后按p粘帖

比如dd删除一行后,这一行会被放入缓冲区

接着移动到你想放置的位置,按p,就被粘帖好了

恢复

u            撤消上次命令
U            恢复整行
ctrl+r       重做
.            重复
e!          全文恢复

推荐阅读更多精彩内容

  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 2,373评论 0 5
  • dpkg 学习 安装mysql apt-get install mysql-server-5.6 apt-get ...
    sharonji阅读 135评论 0 0
  • Vim几句话介绍Vim是Unix系统上的文本编辑软件(你该不会不知道什么是文本编辑软件吧!),在windows上也...
    何必遠方阅读 1,630评论 0 3
  • 本文摘自https://www.cnblogs.com/yangjig/p/6014198.html 感谢原作者的...
    荣子3507阅读 176评论 1 0
  • 自我总结篇: 对文件的操作技巧: vim文件一个有三种状态:命令(浏览/输入命令转变末行模式),文本(添加/编辑/...
    小知大知阅读 349评论 0 0