• 怎样用Vi 编程3 附有 自己主写python的VIMRC :)


    距离前两次写完日志又有一段时间了,用的越来越多,慢慢又发现了几个小功能

    前两次的日志,大家喜欢VIM的可以看下,

    VI 编程1 http://www.cnblogs.com/amaoxiaozhu/archive/2012/03/23/2414007.html

    VI 编程2 http://www.cnblogs.com/amaoxiaozhu/archive/2012/04/05/2423009.html

    好了不多说,开始新的旅程:

    1.  编辑篇:

      H M L 屏幕的顶、中、底部     [不用再费心去想是8j 还是12j 了,一键搞定~]

         gf          编辑光标处的文件名  [最推荐这个了~ 很强大的功能!]

         '.           上次修改位置

         ctrl + o | i    光标位置回溯

         ls |vi -        编辑管道输出

        

    2.  模块篇:

      前提是安装了NERDTree~


      使用某个模块:vi -c NERDTree

      直接打开文件夹可以使用 vi . 或 vi 文件夹路径

    3.  进制篇

    :%!xxd 将当前的文本转换为16进制。大端法

    :%!od 将当前的文本转换为8进制。

    :%!xxd -r将当前的文本转换回文本格式。

    :%!hexdump将当前的文本转换回16进制,小端法显示。

    注:小端法可以理解的内存显示模式(不准确)。大端法可以理解为实际模式。

    4.  其他命令篇

      %表示文件的所有行,!xxd表示外部命令,结合在一起,就是当把当前vim上显示的所有的行传递给xxd,xxd处理后的结果重新显示在vim上。

      整理文件:gg=G 

     G 跳到文件末尾

      vim 编辑加密文件vi -x file 会指定加密密码

      g; 上次修改位置

      ctrl-c 或[ : 直接退出编辑模式 [神一般的快捷键啊]

      @: 重复上次的执行命令

     "2p: 拷贝从第二次到刚才复制过的内容

    5.  查找篇

      f 同一行内查找字符 f( 查找(

      ; 重复上次查找 c;修改到下一个查找的字符

      df 删除同一行内到某个字符的内容

      :g/waf 显示所有的包含waf行的内容

      :g/waf/# 同时显示行号

      /<ctrl - r><ctrl -f> 查找光标处的单词

      /keyword/1    光标定位在查找单词的下一行

         /keyword/e+1 光标定位在查找单词的结束位置右侧+1

       /keyword/s-1  光标定位在查找单词的开始位置左侧 -1

        /<ctrl -r > / else  上次搜索单词+else

         3ft 查找行内的第三个't'

    6. python代码的tags生成

        在tools/scripts 路径下,有python专门为VI提供的tags生成器 ptags.py

        在我的环境中我按照这个方式配置了tags:

                   1. 在自己的开发目录下生成python库的 

         python ptags.py $(find . /usr/lib/python2.5/ -name '*.py'|grep -v 'git') 

                  【很少会查到git的库,leave it】

          2. 编辑.vimrc

      set tags=tags;
          set autochdir

                 首先使用当前目录获取tags【后续开发,可以在新目录中生成子tags】

                 否则就继续向上搜索

    附: 如果你也是一个python coder ~ 握个爪

    set autoindent
    set syntax=on
    set nocp
    set softtabstop=4
    filetype plugin on
    colorscheme IDLE
    let g:pydiction_location='/root/conf/vi/complete-dict'
    
    let Tlist_Show_One_File=1
    let Tlist_Exit_OnlyWindow=1
    let Tlist_Use_Right_Window = 1
    
    set tags=tags;
        set autochdir
    
    map <silent> <F5> mz?(*)<CR>yyggpA;<ESC>'z  " 创建函数原型
    imap <silent> <F5> <ESC>mz?(*)<CR>yyggpA;<ESC>'zA
    
    map <F6> :call Test()<CR>            " 调试
    imap <F6> <ESC>:call Test()<CR>
    
    map <silent> <F7> :Grep<CR><CR><CR>        " 全局搜索
    imap <silent> <F7> <ESC>:Grep<CR><CR><CR>
    
    map <F8> i#<ESC>j0                " 注释
    imap <F8> <ESC>i#<ESC>j0
    
    map <F9> 0Ji<CR><ESC>                "对齐 平级
    imap <F9> <ESC>0Ji<CR><ESC>
    
    map <F10> 0Ji<CR>    <ESC>            "对齐 增加缩进
    imap <F10> <ESC>0Ji<CR>    <ESC>
    
    map <F11> 0Ji<CR><ESC>XXXX<ESC>            "对齐 减少缩进
    imap <F11> <ESC>0Ji<CR><ESC>XXXX<ESC>
    
    function Python_Test()
        let mp = &makeprg
        let ef = &errorformat
        let exeFile = expand("%:t")
        setlocal makeprg=python\ -u
        set efm=%C\ %.%#,%A\ \ File\ \"%f\"\\,\ line\ %l%.%#,%Z%[%^\ ]%\\@=%m
        silent make %
        copen
        let &makeprg     = mp
        let &errorformat = ef
    endfunction
    
    function C_Test()
        let cmd = "!gcc "
        let option = "-O2 "
        if search("math\.h") != 0
        let option .= " -lm "
        endif
        exec cmd. " % " .option
        endif
    
        exec "!./a.out"
        copen
    endfunction
    
    function Test()
        exec "w"
        if    &filetype == "c"
        exec "call C_Test()"
        elseif &filetype == "python"
        exec "call Python_Test()"
        endif
    endfunction
    
    
        

    Enjoy VI Enjoy Code!

  • 相关阅读:
    Redis学习笔记--Redis数据过期策略详解
    网络带宽和速度测试windows和linux用iperf工具
    如何将rabbitmq集群中的某个节点移除.
    关于linux系统密码策略的设置
    linux 系统ssh超时设置
    linux安全 设置登录失败次数后,拒绝登录
    tomcat隐藏版本号
    第 16 章 模板与泛型编程
    第 15 章 面向对象程序设计
    第 14 章 重载运算与类型转换
  • 原文地址:https://www.cnblogs.com/amaoxiaozhu/p/2648811.html
Copyright © 2020-2023  润新知