马哥教育网络班20期+第6周课程练习

vim编辑器使用总结

一、文件的打开与关闭

            打开文件:

                # vim [OPTION]… FILE…

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

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

            关闭文件:

                :q 退出

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

                :wq 保存退出

                :x 保存退出

                :w /PATH/TO/SOMEWHERE

                ZZ: 保存退出;

一、vim的模式:        

            1)基本模式:

                ①编辑模式,命令模式

                ②输入模式

                ③末行模式:

                    内置的命令行接口

            2)各模式之间的转换:

                ①编辑模式 –> 输入模式

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

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

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

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

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

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

                ②输入模式 –> 编辑模式

                    ESC

                ③编辑模式 –> 末行模式

                    :

                ④末行模式 –> 编辑模式

                    ESC

            

二、光标跳转类使用:

           1) 字符间跳转: h, j, k, l            

                    h: 左

                    l: 右

                    j: 下

                    k: 上

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

          2)单词间跳转:

                w:下一个单词的词首

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

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

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

          3)行首行尾跳转:

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

                0: 跳转至行首;

                $: 跳转至行尾;

          4)行间移动:

                #G:跳转至由#指定行;

                G:最后一行;

                1G, gg: 第一行;

          5)句间移动:

                )

                (

          6)段落间移动:

                }

                {

三、vim的编辑命令:

        1)字符编辑:

            x: 删除光标处的字符;

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

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

        2)替换命令(r, replace)

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

        3)删除命令:

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

                d$: 删除至行尾

                d^:删除到某一行的第一个字符位置

                d0: 删除至行首               

                dw:从当前位置删除到下一个单词开头

                db :从当前位置删除到前一个单词的开头

                diw:删除光标上的单词 (不包括空白字符)

                daw:删除光标上的单词 (包括空白字符)

                dG :删除到文件末

                dgg:删除到文件首

                dd: 删除光标所在的行;

                dd:多行删除;

       

        4)复制命令(y, yank):

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

                y      在使用v模式选定了某一块的时候,复制选定块到缓冲区用; 

                yy    复制整行(#yy或者y#y ,复制#行,#为数字); 

                y^   复制当前到行头的内容; 

                y$    复制当前到行尾的内容; 

                yw   复制一个word (nyw或者ynw,复制n个word,n为数字); 

                yG    复制至档尾(nyG或者ynG,复制到第n行,例如1yG或者y1G,复制到档尾)

         5)粘贴命令(p, put, paste):

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

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

四、其它编辑操作

            1)可视化模式:(选定内容进行编辑)

                v: 按字符选定

                V:按行行定

                Note:经常结合编辑命令;

                    d, c, y

            2)撤消此前的编辑:(默认50次)

                u(undo):撤消此前的操作;

                    #u: 撤消指定次数的操作;

            3)撤消此前的撤消:

                Ctrl+r

            4)重复前一个编辑操作:

                .

五、翻屏操作:

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

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

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

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

六、 vim中的末行模式:

        内建的命令行接口

        (1) 地址定界

            :start_pos,end_pos

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

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

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

                .: 当前行

                $: 最后一行

                    .,$-1

                %:全文, 相当于1,$

               /pat1/,/pat2/:

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

                    #,/pat/

                    /pat/,$

            使用方式:

                后跟一个编辑命令

                    d

                    y

                    w /PATH/TO/SOMEWHERE: 将范围内的行另存至指定文件中;

                    r /PATH/FROM/SOMEFILE:在指定位置插入指定文件中的所有内容;

        (2) 查找

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

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

                n:与命令同方向;

                N:与命令反方向;

        (3) 查找并替换

            s: 在末行模式下完成查找替换操作

                %s/要查找的内容/替换为的内容/修饰符

                    要查找的内容:可使用模式

                    替换为的内容:不能使用模式,但可以使用\1, \2, …等后向引用符号;还可以使用“&”引用前面查找时查找到的整个内容;

                    修饰符:

                        i: 忽略大小写

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

                查找替换中的分隔符/可替换为其它字符,例如

                    s@@@

                    s###

         

七、多文件模式:(文件之间能互相编辑)

       1)vim FILE1 FILE2 FILE3 …

                :next 下一个

                :prev 前一个

                :first 第一个

                :last 最后一个

                :wall 保存所有

                :qall 退出所有

        2)窗口分隔模式:

            vim -o|-O FILE1 FILE2 …

                -o: 水平分割

                -O: 垂直分割

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

        3)单文件窗口分割:

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

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

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

            获取帮助:末行模式下使用

                :help 

                :help subject

练习:

1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#;

[root@localhost ~]# cp /etc/rc.d/rc.sysinit /tmp/rc.sysinit
[root@localhost ~]# vim /tmp/rc.sysinit 
:%s/^[[:space:]]\+/#&/g

    

2、复制/boot/grub/grub.conf至/tmp目录中,删除/tmp/grub.conf文件中的行首的空白字符;

[root@localhost ~]# cp /boot/grub/grub.conf /tmp/grub.conf
[root@localhost ~]# vim /tmp/grub.conf 
:%s/^[[:space:]]\+//g

3、删除/tmp/rc.sysinit文件中的以#开头,且后面跟了至少一个空白字符的行行的#和空白字符

:%s/^#[[:space:]]\+//g

4、为/tmp/grub.conf文件中前三行的行首加#号;

:1,3s/^/#&/g

5、将/etc/yum.repos.d/CentOS-Media.repo文件中所有的enabled=0或gpgcheck=0的最后的0修改为1;

:/gpgcheck=0/s/0/1/
:/enabled=0/s/0/1/

6、每4小时执行一次对/etc目录的备份,备份至/backup目录中,保存的目录名为形如etc-201504020202

* */4 * * * cp -r /etc /backup/etc-$(date +%Y%m%d%H%M)

7、每周2,4,6备份/var/log/messages文件至/backup/messages_logs/目录中,保存的文件名形如messages-20150402

* * * * *2,4,6 cp -r /var/log/messages /backup/messages_logs/messages-$(date +%Y%m%d)

8、每天每两小时取当前系统/proc/meminfo文件中的所有以S开头的信息至/stats/memory.txt文件中

* */2 */1 * * grep "^S" /proc/meminfo >> /stats/memory.txt

9、工作日的工作时间内,每两小时执行一次echo "howdy"

* 9-17/2 * * * echo "howdy"

脚本编程练习

10、创建目录/tmp/testdir-当前日期时间; 

#!/bin/bash
#
mkdir /tmp/testdir-$(date +%F-%H-%M-%S)

11、在此目录创建100个空文件:file1-file100

#!/bin/bash
#
declare -i i=1
while (( $i <= 100 )); do
        touch /tmp/file$i
        let i++
done

12、显示/etc/passwd文件中位于第偶数行的用户的用户名;

#!/bin/bash
#
declare -i i=0
declare -i l=$(wc -l /etc/passwd | cut -d" " -f1)
while (( $i <= l )); do
        let i=$i+2
        cat -n /etc/passwd | grep "^[[:space:]]\+$i\>" | awk '{print $2}' | awk -F: '{print $1}'
done

13、创建10用户user10-user19;密码同用户名;

#!/bin/bash
#
for i in {10..19}; do
        useradd user$i
        echo "user$i" | passwd --stdin user$i
done

14、在/tmp/创建10个空文件file10-file19;

#!/bin/bash
#
declare -i i=10
while (( $i <= 19 )); do
        touch /tmp/file$i
        let i++
done

 

15、把file10的属主和属组改为user10,依次类推。

#!/bin/bash
#
for i in {10..19}; do
        chown user$i:user$i file$i
done

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

(0)
mouse015110mouse015110
上一篇 2016-07-17
下一篇 2016-07-17

相关推荐

  • shell脚本编程之函数

      在编写脚本时经常会遇到某个任务需要重复使用的问题,需每次都要输入同样的代码是件挺烦人的事情,还好可以通过编写函数还简化这项工作。   函数其实就是给一段代码起个名字,在每次使用这段代码的时候可以直接使用函数名来调用就可以了。 一、创建函数   创建函数的格式有两种:   格式1:function 函数名{ &nbs…

    Linux干货 2016-01-05
  • Linux上的文件管理类命令

    N27-第二周作业

    2017-10-08
  • 系统管理之程序包管理(二)yum详解

    系统管理之程序包管理(二)yum详解:     上节向大家介绍了程序包管理的理论和rpm命令的使用,本篇文章接着向大家介绍rpm的前端使用工具,方便大家更快捷的管理,使用rpm包,提高工作效率。 一 概论: Centos:yum,dnf 两个rpm前端工具 YUM :yellow dog, Yellowdog,Upda…

    Linux干货 2016-08-24
  • nmap ncat tcpdump浅析

    nmap 的使用 nmap — 网络探测工具和安全/端口扫描器 Usage:nmap [ <扫描类型> …] [ <选项> ] { <扫描目标说明> } 扫描目标说明 -iL inputfilename (从列表中输入) 从 inputfilename中读取目标说明 [root@localhost&…

    Linux干货 2017-03-15
  • Linux任务计划,周期性任务执行详解

    Linux任务计划,周期性任务执行 概述 本章将为大家介绍一些任务计划和周期性任务计划执行相关内容任务计划的分类主要有由两种    未来的某时间点执行一次某任务:at,batch    周期性运行某任务:crontab具体分为三个方面来说明:    1、at计划任务    2、c…

    Linux干货 2016-09-27
  • 第四天作业

    1 、创建 用户gentoo ,附加组为bin 和root ,默认shell为/bin/csh ,注释信息为"Gentoo Distribution" 1 useradd -G bin,root -s /bin/csh -c "Gentoo Distribut…

    Linux干货 2016-08-04

评论列表(1条)

  • 马哥教育
    马哥教育 2016-07-17 22:09

    写的很好,排版也很漂亮,可以尝试画一个思维导图来加深记忆,加油