请详细总结vim编辑器的使用并完成以下练习题
vim编辑器的使用
vim模式:
a,编辑/命令模式;
b,insert/输入模式
c,末行模式
打开文件:
vim [option]… file…
+#:打开文件后,直接让光标处于第#行行首
+/PATTERN:打开文件后,直接让光标处于第一个被PATTERN匹配到的行的行首
模式转换:
编辑模式 –> 输入模式
i:insert ,在光标所在之前输入
a:append,在光标所在之后输入
o:在光标所在行下方开始新行
I:在光标所在行行首输入
A:在光标所在行行尾输入
O:在光标所在行的上方开始新行
输入模式 –> 编辑模式 按ESC
编辑模式 –> 末行模式 按:
关闭文件
:q 退出
:q! 不保存修改,强制退出
:wq 保存退出
:x 保存退出
:w /path/to/somefile
ZZ 保存退出
光标跳转
字符间跳转:h左,j下,k上,l右
#command:跳转由#指定的个数的字符
单词间跳转:
w:下一个单词的词首
e:当前或下一个单词的词尾
b:当前或下一个单词的词首
#command:跳转由#指定的个数的单词
行首行尾跳转:
^:跳转至行首的第一个非空白字符
0:跳转至行首
$:跳转至行尾
行间移动:
#G:跳转至指定的#行
G:最后一行
1G,gg:第一行
句间移动:
):下一句
(:上一句
}:下一段
{:上一段
VIM的编辑命令:
字符编辑:
x:删除光标处的字符
#x:删除光标处以后的#个字符
xp:交互光标所在处及其后面单个字符的位置
删除命令:
d:删除命令,可结合光标跳转字符,实现范围删除
d$ d^ d0
dd 删除光标所在整行
粘贴命令paste:
p:编辑器缓冲区存储的如果是整行,则粘贴至当前光标所在行的下方,否则,粘贴至当前行的后方
P:编辑器缓冲区存储的如果是整行,则粘贴至当前光标所在行的上方,否则,粘贴至当前行的前方
复制命令yank:
y:复制,命令方式和d命令一样
改变命令change:
c:修改,并从编辑模式 –> 输入模式
替换命令replace:
r:替换
可视化模式
v:按字符选定
V:按行选定
Note:经常结合编辑命令,d c y
撤销此前的编辑undo:
u:撤销此前的操作
恢复此前的撤销:
Ctrl+r
重复前一次编辑操作:.
翻屏操作:
Ctrl+f : 向下翻屏
Ctrl+b:向上翻屏
Ctrl+d:向上翻半屏
Ctrl+u:向下翻半屏
Vim中的末行模式:
内建的命令行接口
1. 地址定界
:start_pos,end_pos
:m,+n 选定从第m行开始向下的n行
:.,$ 选定当前行到最后一行
:1,$-1 从第一行到倒数第二行
:% 全文
:/pattern1/,/pattern2/ 选定从第一次pattern1匹配到的行到第一次被pattern2匹配到的行中间的所有行
使用方式:
后跟一个编辑命令
r /path/to/somefile 在指定位置插入指定文件中的所有内容
2. 查找
/pattern:向下查找
?/pattern:向上查找
3. 查找并替换(分隔符可使用其他字符,例如s#p1#p2#)
s:在末行模式下完成查找替换操作
s/查找的内容/替换的内容/修饰符
s/pattern/替换的内容/修饰符 替换的内容可以使用\1 , \2,还可以使用 & 引用前面查找到的内容
修饰符:
i:忽略大小写
g:全局替换,默认替换只替换第一次匹配到的内容
VIM编辑多文件模式
vim file1 file2 file3…
:next 跳转到vim打开的下一个文件
:prev 跳转到vim打开的前一个文件
:first 跳转到VIM打开的第一个文件
:last 跳转到VIM打开的最后一个文件
:wall 保存所有文件
:qall 退出所有
VIM窗口分隔模式
vim -o|O file1 file2.。。
-o:水平分割
-O:垂直分割
在窗口间切换,Ctrl+w,方向键
单文件窗口分割
Ctrl+w,s:split,水平分割
Ctrl+w,v:vertical,垂直分割
定制VIM的工作特性:
配置文件:永久有效
全局:/etc/vimrc
个人:~/.vimrc
末行:当前vim进程有效
1. 行号
显示:set number,简写set nu
取消显示:set nonumber,简写 set nonu
2. 括号匹配
匹配:set showmatch,简写为 set sm
取消匹配:set nosm
3. 自动缩进
缩进:set ai
取消缩进:set noai
4. 高亮搜索
启用:set hlsearch
取消:set nohlsearch
5. 语法高亮
启用:syntax on
取消:syntax off
6. 忽略大小写
启用:set ic
不忽略:set noic
VIM 如何获取帮助
末行模式下使用 :help command
1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#;
:%s/^[[:space:]]\+/#/
2、复制/boot/grub/grub.conf至/tmp目录中,删除/tmp/grub.conf文件中的行首的空白字符;
:%s/^[[:space:]]//
3、删除/tmp/rc.sysinit文件中的以#开头,且后面跟了至少一个空白字符的行行的#和空白字符
:%s/^#[[:space:]]\+//
4、为/tmp/grub.conf文件中前三行的行首加#号;
:1,3s/^/#/
5、将/etc/yum.repos.d/CentOS-Media.repo文件中所有的enabled=0或gpgcheck=0的最后的0修改为1;
:%s/gpgcheck=0/gpgcheck=1/ :%s/enabled=0/enabled=1/
6、每4小时执行一次对/etc目录的备份,备份至/backup目录中,保存的目录名为形如etc-201504020202
#!/bin/bash # cp -R /etc /backup/etc-$(date +%Y%m%d%H%M) crontab -e 0 */4 * * * /backup.sh
7、每周2,4,6备份/var/log/messages文件至/backup/messages_logs/目录中,保存的文件名形如messages-20150402
#!/bin/bash # cp -R /var/log/messages /backup/messages_logs/messages-$(date +%Y%m%d) crontab -e 0 0 * * 2,4,6 /backup.sh
8、每天每两小时取当前系统/proc/meminfo文件中的所有以S开头的信息至/stats/memory.txt文件中
#!/bin/bash # grep '^S' /proc/meminfo > /stats/memory.txt crontab -e 0 */2 * * * /meminfo.sh
9、工作日的工作时间内,每两小时执行一次echo ""howdy""
#!/bin/bash # echo "howdy" crontab -e 0 9-18/2 * * 1-5 /howdy.sh
脚本编程练习
10、创建目录/tmp/testdir-当前日期时间;
mkdir -p /tmp/testdir-$(date +%F-%T)
11、在此目录创建100个空文件:file1-file100
for i in {1..100};do touch file$i;done
12、显示/etc/passwd文件中位于第偶数行的用户的用户名;
[root@localhost backup]# awk -F: '{if(NR%2==0){print $1}}' /etc/passwd
13、创建10用户user10-user19;密码同用户名;
[root@localhost backup]# for i in {10..19};do useradd user$i;echo "user$i" | passwd --stdin user$i ;done
14、在/tmp/创建10个空文件file10-file19;
[root@localhost backup]# for i in $(seq 10 19);do touch file$i;done
15、把file10的属主和属组改为user10,依次类推。
[root@localhost backup]# for i in {1..10};do chown user$i:user$i file$i;done
原创文章,作者:Net21_木头,如若转载,请注明出处:http://www.178linux.com/35605
评论列表(1条)
写的很好,排版还可以在漂亮一点,加油