Vim 编辑器与 Python 命令脚

发布时间:2019-10-14 09:21:48编辑:auto阅读(2206)

    Vim 文本编辑器

    Vim 编辑器的三种模式——命令模式、末行模式和编辑模式

    • 命令模式:控制光标移动,可对文本进行复制、粘贴、删除和查找等工作。
    • 输入模式:正常的文本录入。
    • 末行模式:保存或退出文档,以及设置编辑环境。

    在每次运行 Vim 编辑器时,默认进入命令模式,此时需要先切换(i)到输入模式后再进行文档编写工作,而每次在编写完文档后需要先返回(ESC)命令模式,然后再进入(:)末行模式,执行文档的保存(wq)或退出(q!)操作。

    Vim 中常用的命令

    命令 作用
    dd 删除(剪切)光标所在整行
    5dd 删除(剪切)从光标处开始的5行
    yy 复制光标所在整行
    5yy 复制从光标处开始的5行
    n 显示搜索命令定位到的下一个字符串
    N 显示搜索命令定位到的上一个字符串
    u 撤销上一步的操作
    p 将之前删除(dd)或复制(yy)过的数据粘贴到光标后面

    末行模式中可用的命令

    命令 作用
    :w 保存
    :q 退出
    :q! 强制退出(放弃对文档的修改内容)
    :wq! 强制保存退出
    :set nu 显示行号
    :set nonu 不显示行号
    :命令 执行该命令
    :整数 跳转到该行
    :s/one/two 将当前光标所在行的第一个one替换成two
    :s/one/two/g 将当前光标所在行的所有one替换成two
    :%s/one/two/g 将全文中的所有one替换成two
    ?字符串 在文本中从下至上搜索该字符串
    /字符串 在文本中从上至下搜索该字符串

    Python 命令脚本

    shell 的功能 python 均可实现,而且代码量更少、结构更优、可阅读性更好,而 python 可实现的功能 shell 却不一定能。使用 python 作为 shell 脚本的替代,通常有很多优势:

    • python 在主流的linux发行版本中都被默认安装。
    • python 非常容易阅读,语法容易理解。
    • python 是一个解释性语言,这意味着,不需要编译。
    • python 是一个功能齐全的编程语言。
    • python 可以访问优秀的标准库,还有大量的实现多种功能的第三方库。
    • python 可以是命令链中的一部分。

    脚本声明

    #!/usr/bin/env python3

    在脚本中,第一行以(#!)开头的代码,在计算机行业中叫做"shebang",其作用是"指定由哪个解释器来执行脚本"。

    #!/usr/bin/env/ python3表示"从PATH环境变量"中查找 python3 解释器的位置,再调用该路径下的解释器来执行脚本。

    接收命令行参数

    在 Python 中,sys 模块是一个非常常用且十分重要的模块,通过模块中的 sys.argv 就可以访问到所有的命令行参数,它的返回值是包含所有命令行参数的列表(list)。

    len(sys.argv)   # 参数个数
    sys.argv[0]     # 脚本名称
    sys.argv[1]     # 参数1
    sys.argv[2]     # 参数2

    调用Shell命令

    通过os模块system方法会创建子进程运行外部程序,方法只返回外部程序的运行结果。

    import os
    print os.system("ls -al")

    通过os模块popen方不仅仅返回结果,还可以调用read()方法读取输出内容。

    import os
    output = os.popen('ls -al').read()
    print(output.split('\n'))

    不规范的例子

    [root@localhost ~]# vim showfile.py
    
    #!/bin/env python3
    import os,sys
    if __name__ == '__main__':
        directory = sys.argv[1]
        output = os.popen("ls -lh " + directory).read()
        filelist = output.split('\n')
        for fileinfo in filelist:
            print(fileinfo)
    [root@localhost ~]# chmod +x showfile.py 
    [root@localhost ~]# ./showfile.py /usr/local/share/
    total 0
    drwxr-xr-x.  2 root root   6 Apr 11 00:59 applications
    drwxr-xr-x.  2 root root   6 Apr 11 00:59 info
    drwxr-xr-x. 21 root root 243 Aug 15 06:42 man

关键字