vim简介
vim是从vi发展出来的一个文本编辑器,熟练使用会比普通编辑器更高效(全键盘操作),在程序员中被广泛使用。使用命令与组合键来代替鼠标与键盘,大大提高程序员和文字录入员的速度和效率,并且vim有很多模式可以进行转换,简单介绍经常用的其中六种模式:
普通模式(Normal mode)
在普通模式中,用的编辑器命令,比如移动光标,删除文本等等。这也是Vim启动后的默认模式。这正好和许多新用户期待的操作方式相反(大多数编辑器默认模式为插入模式)。
vim强大的编辑能来自于其普通模式命令。普通模式命令往往需要一个操作符结尾。例如普通模式命令dd删除当前行,但是第一个"d"的后面可以跟另外的移动命令来代替第二个d,比如用移动到下一行的"j"键就可以删除当前行和下一行。另外还可以指定命令重复次数,2dd(重复dd两次),和dj的效果是一样的。在普通模式中,有很多方法可以进入插入模式。比较普通的方式是按a(append/追加)键或者i(insert/插入)键。
插入模式(Insert mode)
在这个模式中,大多数按键都会向文本缓冲中插入文本。大多数新用户希望文本编辑器编辑过程中一直保持这个模式。在插入模式中,可以按ESC键回到普通模式。
可视模式(Visual mode)
这个模式与普通模式比较相似。但是移动命令会扩大高亮的文本区域。高亮区域可以是字符、行或者是一块文本。当执行一个非移动命令时,命令会被执行到这块高亮的区域上。Vim的"文本对象"也能和移动命令一样用在这个模式中。
选择模式(Select mode)
这个模式和无模式编辑器的行为比较相似(Windows标准文本控件的方式)。这个模式中,可以用鼠标或者光标键高亮选择文本,不过输入任何字符的话,Vim会用这个字符替换选择的高亮文本块,并且自动进入插入模式。
命令行模式(Command line mode)
在命令行模式中可以输入会被解释成并执行的文本。例如执行命令(:键),搜索(/和?键)或者过滤命令(!键)。在命令执行之后,Vim返回到命令行模式之前的模式,通常是普通模式。
Ex模式(Ex mode)
这和命令行模式比较相似,在使用:visual命令离开Ex模式前,可以一次执行多条命令。这其中我们常用到就是普通模式、插入模式和命令行模式。
文件保存
进入命令行,输入
:w
表示保存,
:q
表示退出,也可以组合为
:wq
,
:q!
强制退出,
:x
也为保存并退出。
进入命令行模式后输入
:e 文件路径
同样可以打开相应文件。
:w 文件名或路径 //保存文件并重命名,也可以保存到某一路径下
在普通模式下的光标移动
在该模式下使用方向键或者h,j,k,l键可以移动游标,命令如下:

进入插入模式
不同的从普通模式进入插入模式的方法:
一般经常就是用i或a。
退出vim
以下为几种退出方式:
普通模式下也可以用快捷键保存并退出:
Shift+zz
删除文本
进入普通模式即可使用删除,不用进入命令行模式:
在命令前面可以加数字,表示一次删除多个,如:
2dd
表示一次删除2行,
10x
表示连续删除10个字符,
daw
(delete a word)删除一个单词,
d5w
表示删除5个单词。
Vim重复命令
.
(小数点)表示重复上一个命令,比如在普通模式下使用
x
删除字符,之后可以按
.
就可以代替
x
来删除字符。
游标的快速跳转
行间跳转:
nG:游标移动到第n行(若没有显示行号,请先进入命令模式,输入:set nu以显示行号)
gg:游标移动到第一行
G:到最后一行
小技巧:你在完成一次跳转后,可以使用
Ctrl+o
快速回到上一次(跳转前)光标所在位置
行内跳转(在行内按照单词为单位进行跳转):
复制粘贴和剪贴
普通模式中使用
y
复制:
普通模式中,
yy
复制游标所在的整行(3yy表示复制3行)
普通模式中,
y^
复制至行首,或y0。不含光标所在处字符。
普通模式中,
y$
复制至行尾。含光标所在处字符。
普通模式中,
yw
复制一个单词。
普通模式中,
y2w
复制两个单词。
普通模式中,
yG
复制至文本末。
普通模式中,
y1G
复制至文本开头
普通模式中使用
p
粘贴:
普通模式中,
p(小写)
代表粘贴至光标后(下)
普通模式中,
P(大写)
代表粘贴至光标前(上)
前面介绍的删除行dd其实就是剪贴命令,你每次 dd 删除文档内容后,便可以使用 p 来粘贴
交换上下行:
ddp //就是删除当前行后再粘贴
字符的替换和撤销(Undo)操作
替换和Undo命令都是针对普通模式下的操作
快速缩进
缩进操作均在普通模式下有效
>> 向右缩进
<< 向左缩进
普通模式下输入
:
进入命令行模式下对shiftwidth值进行设置可以控制缩进和回退的字符数。
:set shiftwidth? //查询当前缩进值
:set shiftwidth=10 //缩进调整为10个字符
在命令行模式下
:ce //本行居中
:ri //本行靠右
:le //本行靠左
查找
快速查找:
普通模式下输入
/
然后键入需要查找的字符串按回车后就会进行查找。
?
与
/
功能相同,只不过
?
是向上而
/
是向下查找。
进入查找之后,输入n 和 N 可以继续查找。
n(小写)
是查找下一个内容,
N(大写)
查找上一个内容。
高级查找:
普通模式下输入
\*
寻找游标所在处的单词
普通模式下输入
\#
同上,但
\#
是向前(上)找,
\*
则是向后(下)找
普通模式下输入
g\*
同
\*
,但部分符合该单词即可
普通模式下输入
g\#
同
\#
,但部分符合该单词即可
以上查找n,N 的继续查找命令依然可以用
多文件编辑
新建俩个文件,默认进入1.txt文件的编辑界面
vim 1.txt 2.txt
再进入命令行模式
:n //表示切换到下一个文件也就是2.txt,如果1.txt未保存则会提示
:n! //强制切换到下一个文件,如果上一个文件未保存则丢失
:N //切换到上一个文件
:N! //
进入vim后打开新文件:
命令行模式下输入
:e 3.txt
打开新文件3.txt
命令行模式下输入
:e#
回到前一个文件
命令行模式下输入
:ls
可以列出以前编辑过的文档
命令行模式下输入
:b 2.txt(或者编号)
可以直接进入文件2.txt编辑
命令行模式下输入
:bd 2.txt(或者编号)
可以删除以前编辑过的列表中的文件项目
恢复文件
如果因为断电等原因造成文档没有保存,可以采用恢复方式,vim -r进入文档后,输入
:ewcover 1.txt
来恢复
vim -r 1.txt
可视模式简介
在普通模式下输入
v(小写)
,进入字符选择模式,就可以移动光标,光标走过的地方就会选取。再次按下v后就会取消选取。
在普通模式下输入
V(大写)
,进入行选择模式,按下V之后就会把整行选取,您可以上下移动光标选更多的行,同样,再按一次
V
就可以取消选取。
在普通模式下输入
Ctrl+v(小写)
,这是区域选择模式,可以进行矩形区域选择,再按一次
Ctrl+v
取消选取。
当执行一个非移动命令时,命令会被执行到这块高亮的区域上,如:
在可视模式下输入 d 删除选取区域内容
在可视模式下输入y复制选取区域内容
视窗操作
vim 可以在一个界面里打开多个窗口进行编辑,这些编辑窗口称为 vim 的视窗。可以使用在命令行模式下输入
:new
打开一个新的 vim 视窗,如
vim 1.txt //新建一个文本
命令行模式下输入
:new
打开一个新的vim视窗
命令行模式下输入
:vsp 2.txt
打开新的横向视窗来编辑2.txt
命令行模式下输入
:vsp 3.txt
打开新的横向视窗来编辑3.txt
可以使用
Ctrl+w
进行视窗间的跳转
分别在不同视窗的命令行模式下输入
:q!
退出多视窗编辑
文档加密
vim -x file1 //创建加密文档
创建时要输入你的密码 确认密码 这样在下一次打开时,vim就会要求你输入密码。
在vim中执行外部命令
在命令行模式中输入
!
可以执行外部的shell命令,如:
:!ls
用于显示当前目录的内容
:!rm FILENAME
用于删除名为 FILENAME 的文件
:w FILENAME
可将当前 VIM 中正在编辑的文件另存为 FILENAME 文件
功能设定
获取目前的设定
命令行模式下输入
:set
或者
:se
显示所有修改过的配置
命令行模式下输入
:set all
显示所有的设定值
命令行模式下输入
:set option?
显示option的设定值
命令行模式下输入:set nooption 取消当前设定值
set功能的说明
命令行模式下输入:set autoindent(ai) 设置自动缩进
命令行模式下输入
:set autowrite(aw)
设置自动存档,默认未打开
命令行模式下输入
:set background=dark或light
,设置背景风格
命令行模式下输入
:set backup(bk)
设置自动备份,默认未打开
命令行模式下输入
: set cindent(cin)
设置C语言风格缩进