编辑模式    


进入编辑模式,我们就可以对文档进行增删改了。                 

blob.png


blob.png




                                 命令模式

blob.png

blob.png

:+方向键   为调用上次用过的命令

如果在替换字符串的时候也有/ 

(1)我们应该用\来转义


:1,$g/\/etc\/hosts/cansheng/g


(2)使用#

:1,$g#/etc/hosts#cansheng#g



 :wq  和 :x的区别

1.当我们对我文件进了修改,则这两个命令的效果是一样的

2.当我们仅仅打开了文档,但是没做任何操作

 (1)使用:wq 会更改mtime

  (2)使用:x 不会更改mtime 


拓展:

vim的特殊用法 http://www.apelearn.com/bbs/thread-9334-1-1.html
vim常用快捷键总结 http://www.apelearn.com/bbs/thread-407-1-1.html
vim快速删除一段字符 http://www.apelearn.com/bbs/thread-842-1-1.html
vim乱码 http://www.apelearn.com/bbs/thread-6753-1-1.html
小键盘问题 http://www.apelearn.com/bbs/thread-7215-1-1.html
vim加密 http://www.apelearn.com/bbs/thread-7750-1-1.html


把正在编辑的文件另存为新文件

例:把正在编辑的文件另存为到“/root/”下面并保存为1.txt
在一般模式下输入“:w /root/1.txt
例:把正在编辑的文件的第10行到第15行另存为1.txt并保存到root目录下在一般模式下输入“:10,15 w /root/1.txt


把其它文件的内容导入到正在编辑的文件的光标所在处


例:把“/root/1.txt” 文件的内容,导入到下在编辑的文件的第10行下面
首先在一般模式下按“10G”把光标定位到第10行
然后按“o”小写,当前行的下面另起一行,并进入插入模式
最后按键盘上的返回到一般模式,再输入“:r /root/1.txt”回车



.正在编辑文件时,不退出文件仍可以运行linux命令

列:我下在编辑一个文件,但这时候我想查看“/root/1.txt” 文件的内容,但是我不想退出我正在编辑的文件,那么我们可以这样
在编辑模式下输入“:! cat /root/1.txt




.查找替换的功能使用

例:在10到15行的行首增加“#”
在一般模式下输入“:10,15s/^/#/
例:在10到15行的行首去掉“#”
在一般模式下输入“:10,15s/^#//
例:在10到15行的行首增加“//”
在一般模式下输入“:10,15s/^/\/\//”或者“:10,15s@^@//@”或者“:10,15s#^#//#




同进编辑两个文件或者

例:我现正在编辑1.txt文件,然后我想再打开root目录下的2.txt同时编辑,并把窗口上下水平分隔,一起显示
在一般模式下输入“:new /root/2.txt

例:我现正在编辑1.txt文件,然后我想再打开root目录下的2.txt同时编辑,并把窗口左右垂直分隔,一起显示
在一般模式下输入“:vsplit /root/2.txt

注意:在一般模式下按“ctrl+w”组合键,再按左右,或者上下方向键,可以在不同窗口之间切换如果在一般模式下输入“:only”那么只保留当前正在编辑的窗口,其它全关闭





vim 快速删除指定的一段字符

因为不是一行,所以用dd不行,但用x去删除的话,又太慢。今天从网上发现一种特别快速删除的方法。
那就是使用da,如何使用,请看下面的例子。
比如,我的1.txt内容如下:

11111111111111111111111111
222222222222222222222222222222B3NzaC1yc2EAAAABIwAAAQEAv5oJvuIdaaVUsDOA2FbfnL0K2GbTc05Yg6TGM+8SNleI6bU5MhAy2uP5J4yCrMu43911hEJ2uh1UPycWX1O4xpEgUm8TGIs1HoQySnukv3g121uOLACRj37qqL9j4RRhrUxhunAW3alLSGIV0mxFD0ApyycFoLA/1I3hU7Yyx7tdripwz0FeHHhT3Qjfe9yC8Z6Ptq7cvBPXBBvc/G8pXVq3bnGMtj9Ifmbh7NnTvfHnEZGacf2MR4FSy0MMuNL0k3X5sBlsyP9/rXY9CPOh73eKUhZQoK3uWjwuDRp/dqrxgWDVeg0NZ+0t130pKu/LSREothWoVBu54rrtUUIdb3Sq0xsW4x9EhKGJJHPvBrbGbiDPTKBUaHdQEfmQQPAWeeX1hMC7lCunnfgTzf39Pv/2VpXz2l8NH2Jem0nrS48A6sf4eFz5VIakoRySMQu/6mY4s9aU3arbX+JvUE9s2/7D+JdqJlINtQqRU4V92LQq3BJaSMmKiwnPSytxDtARI3+8I2XXqFCJ5bBY7e3333333333333333333333
44444444444444444444444444444
我现在想删除22222222222和33333333333333333之间的字符只需要这样做:
1.  把1.txt的内容改成:
11111111111111111111111111
222222222222222222222222222222{B3NzaC1yc2EAAAABIwAAAQEAv5oJvuIdaaVUsDOA2FbfnL0K2GbTc05Yg6TGM+8SNleI6bU5MhAy2uP5J4yCrMu43911hEJ2uh1UPycWX1O4xpEgUm8TGIs1HoQySnukv3g121uOLACRj37qqL9j4RRhrUxhunAW3alLSGIV0mxFD0ApyycFoLA/1I3hU7Yyx7tdripwz0FeHHhT3Qjfe9yC8Z6Ptq7cvBPXBBvc/G8pXVq3bnGMtj9Ifmbh7NnTvfHnEZGacf2MR4FSy0MMuNL0k3X5sBlsyP9/rXY9CPOh73eKUhZQoK3uWjwuDRp/dqrxgWDVeg0NZ+0t130pKu/LSREothWoVBu54rrtUUIdb3Sq0xsW4x9EhKGJJHPvBrbGbiDPTKBUaHdQEfmQQPAWeeX1hMC7lCunnfgTzf39Pv/2VpXz2l8NH2Jem0nrS48A6sf4eFz5VIakoRySMQu/6mY4s9aU3arbX+JvUE9s2/7D+JdqJlINtQqRU4V92LQq3BJaSMmKiwnPSytxDtARI3+8I2XXqFCJ5bBY7e}3333333333333333333333
44444444444444444444444444444
注意,2222 和{ 之间没有换行。
2.  把光标移动到第一个{,也就是最后一个2后,然后输入da{ 即可把{}内的字符全部删除。

另外,除了可以使用{ 外,还可以使用 ", ', (  等成对的特殊符号。

其实vim还有一个比较常用的那就是v了,用v和d来删除也挺方便的:
打开一个文本后,直接按v,然后移动光标可以选中文本,当选中完你想要的文本后,直接按d,就删除了。