马哥教育网络班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

相关推荐

  • 第一周初入Linux世界 —马哥教育网络班N22_第一周课程练习

    一、描述计算机的组成及其功能        计算机体系结构以图灵机理论为基础,属于冯·诺依曼体系结构。    计算机由运算器、控制器、寄存器、输入输出设备组成            运算器:是计算机中执行各种算术和逻辑运算操作的部件。运算器…

    Linux干货 2016-08-15
  • 关于大型网站技术演进的思考(十)–网站静态化处理—动静整合方案(2)

    原文出处: 夏天的森林    上篇文章我简要的介绍了下网站静态化的演进过程,有朋友可能认为这些知识有点过于稀松平常了,而且网站静态化的技术基点也不是那么高深和难以理解,因此它和时下日新月异的web前端技术相比,就显得不伦不类了。其实当我打算写本系列的之前我个人觉得web前端有一个点是很多人都知道重要,但是有常常低估它作用的,那就…

    2015-03-11
  • linux-第一周

    inux命令:(type)                  1,集成在bash中的命令,内部命令。依赖于shell类型。                  2,在文件系统路径下有…

    Linux干货 2017-05-20
  • find命令之德.摩根定律及perm条件详解

    (1)德.摩根定律        !A -a !B=!( A -o B )        !A -o !B=!( A -a B )        使用条件:条件中存在“非”、“与”…

    Linux干货 2016-08-18
  • 第一周n28

    1.计算机的组成及功能 计算机由五大部件组成。控制器、运算器、存储器、输入输出设备。 1.控制器(Control):是整个计算机的中枢神经,其功能是对程序规定的控制信息进行解释,根据其要求进行控制,调度程序、数据、地址,协调计算机各部分工作及内存与外设的访问等。 2.运算器(Datapath):运算器的功能是对数据进行各种算术运算和逻辑运算,即对数据进行加工…

    Linux干货 2017-12-03
  • 复制多台虚拟机及简单的网络配置

    虚拟机的复制,网络地址的简单配置,图形化界面setup和system-config-network的使用

    2017-09-09

评论列表(1条)

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

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