vim编辑器及练习题

vim工作原理.jpg

命令用法:

vim [OPTION]… FILE… 

+#: 打开文件后,直接让光标处于第#行的行首 

                                例如:[root@localhost ~]# vim +15 /etc/passwd

+/PATTERN:打开文件后,直接让光标处于第一个被PATTERN匹配到的行的行首

                                例如:[root@localhost ~]# vim +15/^rpc /etc/passwd

vim + file 直接打开file,光标在最后一行 

                                例如:[root@localhost ~]# vim + /etc/passwd

vim –b file 二进制方式打开文件 

                                例如:[root@localhost ~]# vim -b /bin/cat

vim –d file1 file2…  比较多个文件 ;窗口模式退出之后,会自动标注至不匹配的编辑模式

                                例如:[root@localhost tmp]# vim -d passwd.out passwd

vim  -m file  只读打开文件;防止误操作,只能查看内容,不能修改内容

                                例如:[root@localhost tmp]# vim -m passwd.out

ex  file 或 vim –e  直接进入ex模式;

如果该文件存在,文件被打开并显示内容 如果该文件不存在,当编辑后第一次存盘时创建它

击键行为是依赖于 vim的 的“模式” 

三种主要模式:

命令模式(默认):移动光标,剪切/粘贴文本 

插入(编辑)模式:修改文本 

扩展命令模式:保存,退出等 

·Esc键 退出当前模式

Esc键 Esc键 总是返回到命令模式

vi: Visual Interface,文本编辑器;文本:ASCII, Unicode 

命令模式 –> 插入模式 

i: insert, 在光标所在处输入 

I:在当前光标所在行的行首输入 

a: append, 在光标所在处后面输入 

A:在当前光标所在行的行尾输入 

o: 在当前光标所在行的下方打开一个新行 

O:在当前光标所在行的上方打开一个新行

模式转换方式:

插入模式 —-> 命令模式 ESC

命令模式 —-> 扩展模式 : 

扩展模式 —-> 命令模式 ESC

锁定和解锁:CTRL+s,Ctrl+q

扩展模式: 

按“:”进入Ex模式

创建一个命令提示符:,处于底部的屏幕左侧

:q 退出 

:q! 强制退出,丢弃做出的修改 

:wq 保存退出 

:x  保存退出 

w  写(存)磁盘文件 

wq 写入并退出 

x  写入并退出 

q  退出 

q!不存盘退出,即使更改都将丢失 

r filename 读文件内容到当前文件中 

w filename  将当前文件内容写入另一个文件 !command r!command

命令模式:

ZZ: 保存退出 

ZQ:不保存退出

字符间跳转:

h: 左

l: 右 

j: 下 

k: 上 

#COMMAND:跳转由#指定的个数的字符; 

单词间跳转: 

w:下一个单词的词首 

e:当前或下一单词的词尾 

b:当前或前一个单词的词首 

#COMMAND:由#指定一次跳转的单词数 

当前页跳转: 

H:页首 

M:页中间行 

L:页底

行首行尾跳转: 

^:  跳转至行首的第一个非空白字符; 

0:        跳转至行首 

$:       跳转至行尾 

行间移动: 

 #G: 扩展模式:

#:   跳转至由#指定行 

G:  最后一行 

1G,gg:    第一行 

句间移动: (按住ctrl实现效果)

):下一句 (:上一句 

段落间移动:(按住ctrl实现效果)

}:下一段 {:上一段

命令模式翻屏:

 Ctrl+f: 向文件尾部翻一屏

 Ctrl+b: 向文件首部翻一屏

 Ctrl+d: 向文件尾部翻半屏

 Ctrl+u:向文件首部翻半屏

字符编辑: 

 x: 删除光标处的字符; 

 #x: 删除光标处起始的#个字符 

 xp: 交换光标所在处的字符及其后面字符的位置

 ~:转换大小写

替换命令(r, replace) 

 r: 替换光标所在处的字符 

 R:切换成REPLACE模式

删除命令:

 d: 删除命令,可结合光标跳转字符,实现范围删除; 

 d$: 删除到行尾 

 d^:删除到非空行首 

 d0:删除到行首 

 dw: de: db: #COMMAND

 dd: 删除光标所在的行 #dd:多行删除

 D:从当前光标位置一直删除到行尾,留空行,等同于d$

复制命令(y, yank): 

 y: 复制,行为相似于d命令 

 yy:复制行 #yy: 复制多行 

 Y: 复制整行

粘贴命令(p, paste):

 p:缓冲区存的如果为整行,则粘贴当前光标所在行的下 方;否则,则粘贴至当前光标所在处的后面 

 P:缓冲区存的如果为整行,则粘贴当前光标所在行的上 方;否则,则粘贴至当前光标所在处的前面

改变命令(c, change) 

 c: 修改后切换成插入模式 

命令模式 –> 插入模式 

 c$ 删除此行光标之后并插入

 c^ 删除此行光标之前并插入

 c0 删除此段光标之后并插入

 cb 删除此段光标之前并插入

 ce 删除此行光标之后的段并插入

 cc 删除当前行并输入新内容 

 C  删除当前光标到行尾,并切换成插入模式

命令使用方法:

 100iluyubo [ESC] 粘贴“luyubo”100次 

 <start position><command><end position> 

 Command: 

 y 复制、d 删除、gU 变大写、gu 变小写 

 例如 0y$ 命令意味着: 

 0 → 先到行头 

 y → 从这里开始拷贝 

 $ → 拷贝到本行最后一个字符 

 ye 从当前位置拷贝到本单词的最后一个字符

撤消更改:

 u撤销最近的更改 

 #u撤销之前多次更改 

 U 撤消光标落在这行后所有此行的更改 

 按Ctrl – r重做最后的“撤消”更改 

 . 重复前一个操作 

 n.重复前一个操作n次

扩展模式:

地址定界:

 #: 具体第#行,例如2表示第2行; 

 #,#: 从左侧#表示行起始,到右侧#表示行结尾 

 #,+#: 从左侧#表示的行起始,加上右侧#表示的行数 :

 2,+3  表示2到5行 

 .: 当前行 

 $: 最后一行 

 .,$-1 当前行到倒数第二行 

 %:全文, 相当于1,$

 /pat1/,/pat2/ 从第一次被pat1模式匹配到的行开始,一直到第一次被 pat2匹配到的行结束 #,/pat/ /pat/,$

使用格式:(后跟一个编辑命令)

 w file: 将范围内的行另存至指定文件中 

 r file:在指定位置插入指定文件中的所有内容

查找并替换:

 /PATTERN:从当前光标所在处向文件尾部查找 

 ?PATTERN:从当前光标所在处向文件首部查找 

 n:与命令同方向 

 N:与命令反方向

 s: 在扩展模式下完成查找替换操作 格式:s/要查找的内容/替换为的内容/修饰符 要查找的内容:可使用模式 替换为的内容:不能使用模式,但可以使用\1, \2, … 等后向引用符号;还可以使用“&”引用前面查找时查找到的整个内容  格式:s///,s@@@,s$$$

修饰符: 

 i: 忽略大小写 

 g: 全局替换;默认情况下,每一行只替换第一次出现 

 gc:全局替换,每次替换前询问

 查找替换中的分隔符/可替换为其它字符,例如 s@/etc@/var@g s#/boot#/#i

vim寄存器介绍:

 有26个命名寄存器和1个无命名寄存器,常存放不同的 剪贴版内容,可以不同会话间共享。 

 用a,b,…,z表示,用“寄存器表示,放在数字和命令之间 如:3"tyy 表示复制3行到t寄存器中 "tp  表示将t寄存器内容粘贴 

 未指定,将使用无命名寄存器 

 有10个数字寄存器,用0,1,…,9表示,0存放最近复 制内容,1存放最近删除内容。当新的文本变更和删除 时,1转存到2,2转存到3,以此类推。数字寄存器不能 在不同会话间共享。

编辑二进制:

 以二进制方式打开文件 vim –b binaryfile 

 扩展命令模式下,利用xxd命令转换为可读的十六进制 :%!xxd 

 扩展命令模式下,利用xxd命令转换回二进制 :%!xxd –r 

 保存退出

可视化模式:

 允许选择的文本块 

 v 面向字符 

 V 面向行 

 ctrl-v 面向块 

 可视化键可用于与移动键结合使用: w, ) , } ,箭头等 

 突出显示的文字可以被删除,复制,变更,过滤,搜索/替换 等

多文件模式:

 vim FILE1 FILE2 FILE3 … :

 :next  下一个 

 :prev  前一个 

 :first 第一个 

 :last  最后一个 

 :wall  保存所有 

 :qall  退出所有 

 :wqall 保存所有并退出

多文件分割:

 vim -o|-O FILE1 FILE2 … 

 -o: 水平分割 

 -O: 垂直分割 

 在窗口间切换:Ctrl+w, Arrow 

单个文件窗口分割:

 Ctrl+w,s: split, 水平分割 

 Ctrl+w,v: vertical, 垂直分割 

 ctrl+w,q:取消相邻窗口 

 ctrl+w,o:取消全部窗口 

 :wqall 退出

定制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

(7) 文件格式

启用:fileformat=unix 

不忽略: fileformat=dos 

(8) 设置文本宽度

:set textwidth=65 (vim only) 

:set wrapmargin=15 

:help option-list 

:set or :set all

练习案例:

1、复制/etc/profile至/tmp/目录,用查找替换命令删除 /tmp/profile文件中的行首的空白字符

[root@localhost tmp]# vim profile
扩展模式输入:%s@^[[:space:]]\+@@

2、复制/etc/rc.d/init.d/functions文件至/tmp目录,用查 找替换命令为/tmp/functions的每行开头为空白字符的行的 行首添加一个#号

[root@localhost tmp]# vim functions 
扩展模式输入:%s@^[[:space:]]@#$@

3、如何设置tab缩进为4个字符? 

set ts=4

4、复制/etc/rc.d/init.d/functions文件至/tmp目录;替换 /tmp/functions文件中的/etc/sysconfig/init为/var/log; 

[root@localhost tmp]# vim functions 
:%s@/etc/sysconfig/init@/var/log:@

5、删除/tmp/functions文件中所有以#开头,且#后面至少 有一个空白字符的行的行首的#号;

[root@localhost tmp]# vim functions 
:%s@^#[[:space:]]\+@#@g

6、将/etc/yum.repos.d/CentOS-Base.repo文件中所有的enabled=0替换为enabled=1,所有gpgcheck=0替换为gpgcheck=1

:%s@\(gpgcheck\|enabled\)=1@\1=0@

原创文章,作者:闹钟哥,如若转载,请注明出处:http://www.178linux.com/32837

(1)
闹钟哥闹钟哥
上一篇 2016-08-11
下一篇 2016-08-11

相关推荐

  • 一、循环语句:for, while, until 循环执行:将某代码段重复运行多次重复运行多少次:循环次数事先已知循环次数事先未知有进入条件和退出条件 1.for……do……done for 变量 in 列表 ; do    循环体done 执行机制:依次将列表中的元素赋值给“变量名”; 每次赋值后即执行一次循环体; 直到列表中…

    Linux干货 2016-08-19
  • ps查看进程

    ps命令 ps [OPTION]支持三种选项UNIX选项 如-A -eBSD选项 如aGNU选项 如–help选项:默认显示当前终端中的进程a 选项包括所有终端中的进程x 选项包括不连接终端的进程u 选项显示进程所有者的信息f 选项显示进程树,相当于 –forestk|–sort 属性 对属性排序,属性前加- 表示倒序o …

    2017-12-19
  • Nginx配置与应用详解

    前言 Nginx是由俄罗斯软件工程师Igor Sysoev开发的一个高性能的HTTP和反向代理服务器,具备IMAP/POP3和SMTP服务器功能。Nginx最大的特点是对高并发的支持和高效的负载均衡,在高并发的需求场景下,是Apache服务器不错的替代品。目前,包括新浪、腾讯等知名网站都已使用Nginx作为Web应用服务器。本文带来的是Nginx配置与应用详…

    Linux干货 2015-06-15
  • 轻松实现源码打包安装[原创]

    通常我们在Linux/Unix下安装一平台时往往需要十几甚至更多安装包,这些源码包来源于网络、本地硬盘、移动设备。有时碰到网络不畅通或下载地址失效会带来很多麻烦,一个好方法便是将常用的软件包下载到本地硬盘存放。问题是久而久之连自己都不晓得哪些包才是适用的。现用makeself来实现自解压倒安装倒是一个很好的解决方案,下面以制作Func客户端安装包为例。 一、…

    Linux干货 2015-03-27
  • 关于高级文件管理系统的几个实验

    实验1:用软件模拟生成RAID (1)选择磁盘或者创建新的分区lsblk 选择bcde四块磁盘 创建新的分区 每个为5Gfdisk(gdisk) /dev/sdb 交互式方式创建 选择分区ID为raid 6.7编号不一样!!! >可能需要同步内核中的磁盘分区表 centos6中用partx -a centos7中用 partprobe命令 (2)创建R…

    2017-08-12
  • httpd功能配置之访问控制

       httpd服务可以实现对资源访问控制,可以根据IP地址和用户两种方式进行控制。    一、用户认证控制      1、在站点根目录下创建一个目录及一个页面文件      2、修改/var/httpd/conf/httpd.conf文件   &n…

    Linux干货 2016-03-11