首页 > 代码库 > VIM编辑器
VIM编辑器
VIM编辑器介绍
什么是VIM?
Vim是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性。VIM是纯粹的自由软件。
Vim是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用,和Emacs并列成为类Unix系统用户最喜欢的文本编辑器。
VIM的使用
1、在插入模式之外
2、使用 h、j、k、l
3、在当前行里面有效的移动光标
常用到的一些命令
fx:移动光标到当前行的下一个 x 处。很明显,x 可以是任意一个字母,而且你可以使用 ; 来重复上一个 f 命令;
tx:和上面的命令类似,但是是移动到 x 的左边一个位置;
Fx:和 fx 类似,不过是往回找。使用 , 来重复上一个F命令;
Tx:和 tx 类似,不过是往回移动到 x 的右边一个位置;
b:光标往前移动一个词;
w:光标往后移动一个词;
0:移动光标到当前行首(是数字0);
^:移动光标到当前行的第一个字母位置;
$:移动光标到行尾;
):移动光标到下一个句子;
( :移动光标到上一个句子;
在整个文件里面有效移动光标
<Ctrl-f>:向下移动一屏;
<Ctrl-d>:向下移动半屏;
<Ctrl-b>:向上移动一屏;
<Ctrl-u>:向上移动半屏;
G:到文件尾;
numG:移动光标到指定的行(num);
gg:到文件首;
H:移动光标到屏幕上面;
M:移动光标到屏幕中间;
L:移动光标到屏幕下面;
*:读取光标处的字符串,并且移动光标到它再次出现的地方;
#:和上面的类似,但是是往反方向寻找;
/text:从当前光标处开始搜索字符串 text,并且到达 text 出现的地方。使用回车开始搜索命令。如果想重复搜索的话,按 n移动到下个 text 处,N 移动到上一个 text 处 ;
?text:和上面类似,但是是反方向;
m{a-z}:在当前光标的位置标记一个书签,名字为 a-z 的单个字母。书签名只能是小写字母;
`a:到书签 a 处;
`.:到你上次编辑文件的地方;
进入插入模式
i:在当前字符的左边插入;
I:在当前行首插入;
a:在当前字符的右边插入;
A:在当前行尾插入;
o:在当前行下面插入一个新行;
O:在当前行上面插入一个新行;
c{motion}:删除 motion 命令跨过的字符,并且进入插入模式;
c$,这将会删除从光标位置到行尾的字符并且进入插入模式;
ct!,这会删除从光标位置到下一个叹号(但不包括),然后进入插入模式;
注意:被删除的字符被存在了剪贴板里面,并且可以再粘贴出来。
d{motion}:和上面差不多,但是不进入插入模式;
有效的移动大段的文本
v:按字符选择;
V:按行选择;
<C-V>:按块选择;
在可视选择模式下剪切和拷贝
d:剪贴选择的内容到剪贴板;
y:拷贝选择的内容到剪贴板;
c:剪贴选择的内容到剪贴板并且进入插入模式;
d{motion}:剪切 motion 命令跨过的字符到剪贴板;
y{motion}:和上面类似,不过是拷贝;
c{motion}:和 d{motion} 类似,不过最后进入插入模式;
dd:剪切当前行;
yy:拷贝当前行;
cc:剪切当前行并且进入插入模式;
D:剪切从光标位置到行尾到剪贴板;
Y:拷贝当前行;
C:和 D 类似,最后进入插入模式;
x:剪切当前字符到剪贴板;
s:和x类似,不过最后进入插入模式;
p:粘贴;
vim的配置
设置缩进::set smartindent // 设置缩进; :set smartindent shiftwidth=4 // C语言自动缩进,缩进值为4个字符宽度;
显示光标行列信息::set ruler // 显示光标信息(右下角);
查看制表符::set list // 显示制表符,以^符号显示制表符的位置;
查看行数信息::set number //显示行号(左边);
关键字高亮::syntax on //关键字高亮;
多文件编辑:: split two.c // 多文件编辑;
练习
1.复制/etc/rc.d/init.d/functions文件至/tmp目录,将/tmp/functions文件中的以至少一个空白字符开头的行的行首加#;
# cp /etc/rc.d/init.d/functions /tmp/ # vim /tmp/functions :s@^[[:space:]]\+@#@g
2.复制/boot/grub/grub.conf至/tmp目录中,删除/tmp/grub.conf文件中的行首的空白字符;
# cp /boot/grub/grub.conf /tmp/ # vim /tmp/grub.conf :%s@^[[:space:]]\+@@g
3.删除/tmp/rc.sysinit文件中的以#开头,且后面跟了至少一个空白字符的行行的#和空白字符;
# vim /tmp/rc.sysinit :%s@^#[[:space:]]\+@@g
4.为/tmp/grub.conf文件中前三行的行首加#号;
# vim /tmp/grub.conf :1,3s@^@#@g
5.将/etc/yum.repos.d/CentOS-Media.repo文件中所有的enabled=0或gpgcheck=0的最后的0修改为1;
# vim /etc/yum.repos.d/CentOS-Media.repo :%s@=0@=1@g
6.每4小时执行一次对/etc目录的备份,备份至/backup目录中,保存的目录名为形如etc-201504020202;
0 */4 * * * /usr/bin/cp -rf /etc /backup/etc-$(date +%Y%m%d) &> /dev/null
7.每周2,4,6备份/var/log/messages文件至/backup/messages_logs/目录中,保存的文件名形如messages-20150402;
0 0 * * 2,4,6 /usr/bin/cp /var/log/messages /backup/messages_logs/messages-$(date +%Y%m%d)
8.每天每两小时取当前系统/proc/meminfo文件中的所有以S开头的信息至/stats/memory.txt文件中;
0 */2 * * * /usr/bin/grep ‘^S‘ >> /stats/memory.txt
9.工作日的工作时间内,每两小时执行一次echo "howdy";
0 */2 * * 1-5 /usr/bin/echo "howdy"
10.创建目录/tmp/testdir-当前日期时间;
# mkdir /tmp/testdir-`date +%F`
11.在此目录创建100个空文件:file1-file100;
#!/bin/bash # for i in {1..100};do touch file$i done
12.显示/etc/passwd文件中位于第偶数行的用户的用户名;
# sed -n ‘n;p‘ /etc/passwd | cut -d: -f1
13.创建10用户user10-user19;密码同用户名;
#!/bin/bash # for i in {10..19};do useradd user$i echo "user$i" | passwd --stide user$i &> /dev/null done
14.在/tmp/创建10个空文件file10-file19;
#!/bin/bash # for i in {10..19};do touch /tmp/file$i done
15.把file10的属主和属组改为user10,依次类推。
#!/bin/bash # for i in {10..19};do chown user$i.user$i /tmp/file$i done
VIM编辑器