马哥教育网络班22期+第六周课程练习

vim编辑器的使用总结
    vim编辑器是模式化的全屏文本编辑器,有三种基本模式:
        编辑模式
        输入模式
        末行模式:内置的命令行接口

    语法格式:vim [options] [file ..]
        +#:打开文件后,直接让光标处于第#行的行首
        +/PATTERN:打开文件后,直接让光标处于第一个被PATTERN匹配到的行的行首
        +:打开文件后,直接让光标处于最后一行的行首

    模式转换:vim编辑器默认模式为编辑模式
        编辑模式–>输入模式
             i:insert,在光标所在处输入
             a:append,在光标所在处后方输入
             o:在光标所在处下方打开一个新行
             I:在光标所在行的行首输入
             A:在光标所在行的行尾输入
             O:在光标所在处上方打开一个新行
        输入模式–>编辑模式
            按Esc键即可
        编辑模式–>末行模式
           输入 : 冒号即可
        末行模式–>编辑模式
            按Esc键两次

    如何关闭文件:
        ZZ 保存并退出
        :q 退出
        :q! 强制退出,不保存此前的编辑操作
        :wq 保存并退出(:w,:q)
       :x 保存并退出
        :w /PATH/TO/SOMEFILE 文件另存为

    光标跳转:
        字符间跳转
            h:向左跳转1个字符
            l:向右跳转1个字符
            j:向下跳转
            k:向上跳转
            #h,#j,#k,#l:跳转由#指定的个数的字符
        单词间跳转
            w:下一个单词的词首
            e:跳转至当前或后一个单词的词尾
            b:跳转至当前或前一个单词的词首
        行首行尾跳转
            ^:跳转至行首的第一个非空白字符
            0:跳转至行首
            $:跳转至行尾
        行间跳转
            G:跳转至最后一行
            1G,gg:跳转至第一行
            #G:跳转至由#指定的行
        句间跳转
            ):下一句
            (:上一句
            #):下#句
            #(:上#句
         段间跳转
             }:下一段
             {:上一段
             #}:下#段
             #{:上#段

    翻屏:
        Ctrl+f:向文件尾部翻一屏
        Ctrl+b:向文件首部翻一屏
        Ctrl+d:向文件尾部翻半屏
        Ctrl+u:向文件首部翻半屏
        Enter:向文件尾部翻一行
        k:向文件首部翻一行

    vim的编辑命令:
        字符编辑
            x:删除光标所在处的字符
            #x:删除光标所在处起始的#个字符
            xp:交换光标所在处的字符与其后面的字符的位置
        替换命令(replace)
            r:替换光标所在处的字符,r后面跟上要替换的字符
                rCHAR
        删除命令
            d:删除命令,可结合光标跳转字符,实现范围删除
                d$:删除光标所在处至行尾的字符
                d^:删除光标所在处至行首的字符
                dw:删除光标所在处至下一个单词词首的字符
                de:删除至当前单词词首或下一个单词词首
                db:删除至当前单词词首或上一个单词词首
                    #dw,#de,#db
                dd:删除光标所在处的行
                    #dd:删除光标所在处的行起始的共#行
                注意:删除的内容并不会被清空,而是保存在缓冲区
        粘贴命令(p,put,paste)
            p:缓冲区中的内容如果为整行,则粘贴在当前光标所在行的下方;否则,粘贴至当前光标所在处的后方
            P:缓冲区中的内容如果为整行,则粘贴在当前光标所在行的上方;否则,粘贴至当前光标所在处的前方
        复制命令(yank,y)
            y:复制,工作行为相似于d命令
                y$,y^,y0,yw,ye,yb
                    #yw,#ye,#yb
                yy:复制一整行
                    #yy:复制#行
        改变命令(change,c):
            编辑模式–>输入模式,实现删除操作
                c$,c^,c0,cw,ce,cb
                    #cw,#ce,#cb
                cc:删除光标所在的行,并转换为输出模式
                    #cc
        其它编辑操作
            可视化模式:
                v:按字符选定
                V:按行选定
                结合编辑命令使用:d,c,y
        撤销(undo)操作:
            u:撤销此前的操作
                #u:撤销此前的#个操作(最多50次)
        重做:Ctrl+r
        重复执行前一个编辑操作:输入 . 点号即

    vim末行模式:内建的命令行接口
        (1)地址定界
            :start_post[,end_post]
                .:表示当前行
                $:表示最后一行
                %:表示全文
                #:特定的第#行
                #,#:指定行范围,左侧为起始行,右侧为结束行
                #,+#:指定行范围,左侧为起始行绝对编号,右侧为相对左侧行号的偏移量,例如:3,+7
                /pattern/:从光标所在处起始向文件尾部第一次被模式所匹配到的行,例如:/first/,$
                /pat1/,/pat2/:从光标所在处起始,第一次由part1匹配到的行开始,至第一次由part2匹配到的行结束之间的所有行
                w /PATH/TO/SOMEFILE:将范围内的文本保存至指定的文件中
                r /PATH/FROM/SOMEFILE:将指定的文件中的文本读取并插入至指定位置
            可同编辑命令一同使用,实现编辑操作:
                d,y,c
        (2)查找
            /PATTERN:从当前光标所在处向文件尾部查找能够被当前模式匹配到的所有字符串
            ?PATTERN:从当前光标所在处向文件首部查找能够被当前模式匹配到的所有字符串
            n:下一个,与命令方向相同
            N:上一个,与命令方向相反
        (3)查找并替换
            s:末行模式的命令
                使用格式:s/要查找的内容/要替换为的内容/修饰符
                    要查找的内容:可使用正则表达式
                    要替换为的内容:不能使用正则表达式,但可以引用
                        如果“要查找的内容”部分在模式中使用分组符号:在“替换为的内容”中使用后向引用直接引用查找模式匹配到的全部文本,使用&符号
                    修饰符:
                        i:忽略大小写
                        g:全局替换,意味着一行中如果匹配到多次,则均替换
                可把分隔符替换为其它非常用的字符:
                    s@@@
                    s###

    vim的多文件功能:
        语法格式:vim FILE1 FILE2 …
            在文件间切换:
                next:下一个
                prev:上一个
                last:最后一个
                first:第一个
            退出所有文件:
                :wqall 保存所有文件并退出
                :wall
                :qall
            多窗口:
                -o:水平分割窗口
                -O:垂直分割窗口
                在窗口间切换:Ctrl+w,然后使用光标移动
                注意;单个文件也可以分割为多个窗口进行查看
                    Ctrl+w,s:水平分割窗口
                    Ctrl+s,v:垂直分割窗口

    定制vim的工作特性:
        注意:在末行模式下的设定,仅对当前vim进程有效
        永久有效:
            全局:/etc/vimrc
            个人:~/.vimrc(没有可此文件自行创建)
        1.行号
            显示:set number,简写set nu
            取消显示:set nonumber,简写set nonu
        2.括号匹配高亮
            匹配:set showmatch,简写set sm
            取消匹配:set noshowmatch,简写set nosm
        3.自动缩进
            启用:set ai
            禁用:set noai
        4.高亮搜索
            启用:set hlsearch
            禁用:set nohlsearch
        5.语法高亮
            启用:syntax on
            禁用:syntax off
        6.忽略字符大小写
            启用;set ic
            禁用:set noic
        :set all 可以查看所有配置项
            例如:设置tab键缩进4个字符:set tabstop=4
        获取帮助:
            :help
            :help subject

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

:%s@^[[:space:]]\+@#&@g

2、复制/boot/grub/grub.conf至/tmp目录中,删除/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;

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

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

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

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

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

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

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

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

0  9-17/2  *  *  1-5 root  echo "howdy"

脚本编程练习:
10、创建目录/tmp/testdir-当前日期时间;

#!/bin/bash
mkdir /tmp/testdir-$(date +%Y%m%d%H%M)

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

#!/bin/bash
for(i=1;i<=100;i++) {
    touch /tmp/testdir-$(date +%Y%m%d%H%M)/file$i
}

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

#!/bin/bash
sed -n 'n;p' /etc/passwd | cut -d: -f1

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

#!/bin/bash
for(i=10;i<=19;i++) {
    useradd user$i
    echo "user$i" | passwd --stdin user$i &> /dev/null
}

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

#!/bin/bash
for(i=10;i<=19;i++) {
    touch /tmp/file$i
}

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

#!/bin/bash
for(i=10;i<=19;i++) {
    chown user$i:user$i file$i   
}

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

评论列表(1条)

  • 马哥教育
    马哥教育 2016-11-02 14:38

    博客写得非常的好,32个赞,vim的总结非常详细,加油!