zoukankan      html  css  js  c++  java
  • vim 配置

    1. vim配置文件

    ~/.vimrc使用双引号进行注释,~/.viminfo文件会对一些配置项进行记录。

    2. ctags的使用

    ①. 在你的代码的某个父目录生成tags文件:ctags -R。
    ②. 在.vimrc添加:
        se tag=tags;       "自动查找父目录的tags文件
        se nocst           "直接跳转到定义处
        se acd             "自动切换工作目录

      Mac上xcode的ctags的使用:

    ctags *
    find `pwd` -type f -exec ctags -adtwf tags {} ;

    3. 实用快捷键

    */#          搜索上一个/下一个
    n/N          跳转到上一个/下一个搜索
    ctrl + ] 跳转到定义处(依赖ctags文件) ctrl + t 跳回调用处(依赖ctags文件) [ + ctrl + i 跳转到声明处 ctrl + i/o 光标前进/回退 g + f 打开文件/路径 g + d 跳到定义处/首次出现的地方 ctrl +g 显示文件总行数 ctrl + p/n 插入上个/下个匹配 ctrl + w 删除光标前的一个单词 ctrl + u 删除当前行所有 ctrl + d/t 行首插入、删除一个缩进 y + i + " 拷贝"xxx"内的内容,i为内,a为包含 y + i + t 光标放到 html tag名字上,将把标签的value复制到剪切板 y + f + t  复制当前行上光标到第一个t之间的所有内容 ctrl+v shift+i Esc Esc 列编辑模式 每行的行首都添加一个字符串:%s/^/要插入的字符串 每行的行尾都添加一个字符串:%s/$/要插入的字符串 ctrl + a/x 数字增/减 g + a 显示10进制、16进制、8进制 g + U/u + w 单词大/小写转换 '0 跳到上次退出的地方 shift + v + U/u 整行转换为大/小写 u 撤销操作 ctrl + r 重做(windows系统是ctrl + y重做,不用搞反了)

      关于行尾模式:

    ① 置于行首
    ② 按shift + v
    ③ 按 a、按 end + i、end + a、按右方向键移动到想要标定的位置
    ④ 输入内容
    ⑤ esc + esc
    以上按右方向键,输入的内容在标定位置整齐排成一列。按 end + a, 输入内容顺序追加到内容末尾。

    4. 命令行模式

    查看帮助        : help set
    
    查看寄存器      : reg
    
    查看标签        : marks
    
    执行命令        : !sh compile.sh
    
    查看配色方案    : hi

      vim的正则: 参考

      删除全为空的一行:g#^s*$#d。s同样可以用 代替,同时为了更通用,可以使用posix标准的表达式代替都是ok的,也可以用集合的形式表示。

      g就是%s,d就是删除。所以可以用规则的方法代替:%s#^s*$##g

      注意sed命令的&的使用技巧。

    5. 文件查看

      十六进制查看:vim -b filename打开文件然后:%!xxd

      二进制查看:%!xxd -r

      只有16进制的修改会生效。

      补充:

    一、vim下显示16进制数据
    :%!xxd -g 1 表示每1个字节为1组
    :%!xxd -g 2 表示每2个字节为1组(默认)
    :%!xxd -g 4 表示每4个字节为1组
    :%!xxd -r 将vim恢复成原来的显示
    man xxd可以获得xxd的帮助文件
    二、hexdump显示16进制数据
    hexdump可以以16进制形式显示文件内容,比如一个内容为01234567890的文件
    
    记住一个用法即可(-C):
    
    hexdump a -C
    00000000 30 31 32 33 34 35 36 37 38 39 30 0a |01234567890. |
    0000000c
    
    红色部分是对应的16进制 和 ascii码
    
    
     --> 0x0d 回车符
    
    
     --> 0x0a 换行符
    Vim和Hexdump

    6. 主题设置

    se t_Co=256
    " 背景配色方案
    hi Normal guifg=#c0c0c0 guibg=#000040 ctermfg=7 ctermbg=black
    " 行号的显示配色
    " hi LineNr ctermfg=214 ctermbg=238
    hi LineNr ctermfg=222 ctermbg=238 

    7. 基本设置

    syn on
    se fdm=indent                    "代码自动折叠方法
    se tag=tags;                     "ctags 文件
    se nu                            "设置行号
    se cul                           "水平光标
    "se cul                          "垂直光标
    se sm                            "高亮显示括号匹配
    se acd                           "自动切换工作目录
    se ts=4                          "设置tab的长度为四个空格的长度,编码依然是tab
    se et                            "expand tab,将tab从编码上替换为空格键,不影响 < 或 > 缩进的长度
    se sts=4                         "够tab的长度补tab,不够tab的长度补空格
    se sw=4                          "shiftwidth 设置 < 或  > 一次缩进为4个空格
    se ai                            "自动缩进
    se si                            "智能缩进
    se hls                           "高亮显示搜索结果
    "se ic                           "忽略大小写
    se is 
    se aw                            
    se nocst
    se clipboard=unnamed    
    se wildmode=list:longest
    "se mouse=a
    "se mousemode=popup
    se selectmode=mouse,key
    "fileencodings
    "se fencs=utf-8,gbk,utf-16,big5
    se helplang=cn
    se encoding=cp936
    se fileencoding=cp936
    

    8. 设置头文件模板

    autocmd BufNewFile *.c,*.cc,*.cpp exec ":call SetTemplate()"
    func SetTemplate()
        call setline(1,"/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ")
        call append(line("."), "* Author: Alex")
        call append(line(".")+1, "* mail: abnk@qq.com")
        call append(line(".")+2, "* File Type: ".&ff." Name: ".expand("%"))
        call append(line(".")+3, "* Created Time: ".strftime("%Y-%m-%d %H:%M %S")) " %c
        call append(line(".")+4, "*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */")
        if (&filetype == 'cpp' || &filetype == 'cc')
        call append(line(".")+5, "#include<iostream>")
        call append(line(".")+6, "using namespace std;")
        endif
        if &filetype == 'c'
        call append(line(".")+5, "#include<stdio.h>")
        call append(line(".")+6, "#include<stdlib.h>")
        endif
        call append(line(".")+7, "int main(int argc,char *argv[],char *env[])")
        call append(line(".")+8, "{")
        call append(line(".")+9, "    ")
        call append(line(".")+10, "    return 0;")
        call append(line(".")+11,"}")
        autocmd BufNewFile * normal G
    endfunc
    

    9. 设置状态栏

    "显示行号,列号
    "se stl+=%1* %l%*
    "hi User1 cterm=bold ctermfg=130 ctermbg=0
    
    "显示文件浏览百分比
    se stl+=%2* %P %*
    hi User2 cterm=bold ctermfg=9 ctermbg=121
    
    "显示文件名
    se stl+=%3* %f %*
    hi User3 cterm=none ctermfg=red ctermbg=256
    
    se stl+=%<
    se stl+=%5*                                                                                                                                                                                                                      %*
    hi User5 cterm=none ctermfg=0 ctermbg=0
    se stl+=%=
    
    "显示文件编码类型
    se stl+=%6* %{"".(&fenc==""?&enc:&fenc).((exists("+bomb") && &bomb)?",B":"").""} %*
    hi User6 cterm=bold ctermfg=172 ctermbg=256
    
    "显示系统时间
    se stl+=%9*%{strftime("%m.%d")}%*
    hi User9 cterm=bold ctermfg=6 ctermbg=242 "gray          
    se stl+=%5* %*
    se stl+=%7* %{strftime("%H:%M")} %*
    hi User7 cterm=bold ctermfg=1 ctermbg=34
    
    se ls=2
    

    10. 颜色对照表

      

    11. vim中文参考文档

      http://vimcdoc.sourceforge.net

    12. 补充技巧

      在.vimrc中添加上这一行:

    iab xtime <c-r>=strftime("Alex %Y-%m-%d %H:%M:%S")<cr>

        然后输入xtime即可插入作者、时间。xtime可以换成其它的。

        实际上,这就是缩写:https://blog.csdn.net/lalor/article/details/7288553

        搜索与修改技巧:https://www.cnblogs.com/ifantastic/p/3826433.html

    13. 空格和Tab的替换

        https://www.jianshu.com/p/926eff5b9def

    14. 我的简洁配置

    se nu
    se si se sw
    =4 "按==或>>后缩进为4 se st=4 se sts=4 se et se tag=tags; se nocst se acd
    se hls "高亮搜索

        ts和et联用就是替换tab键。

    # 打开到上次退出的地方。快捷键'0代替,或者 ctrl + o 回退光标
    if has("autocmd")
    
      autocmd BufReadPost *
         if line("'"") > 0 && line("'"") <= line("$") |
           exe "normal g`"" |
         endif
    endif

    15. 常用操作

        ① 查看文本中所有的tab和空格

    se list

        ② 将tab替换为4个空格

    :set ts=4
    :set expandtab
    :%retab!          "加!是用于处理非空白字符之后的TAB,即所有的TAB,若不加!,则只处理行首的TAB

    16. MacOS安装ctags

      使用代理:参考

    brew install ctags -exuberant

    17. 一种获取函数签名的方法

    ctags --languages=c -R *
    egrep -o "^[^$]+)" tags
    egrep -o "^[^$]+);" tags     #单纯获取声明

      以上,没有搜到头文件的函数声明,还是比较靠谱的。如此,便可以辅助快速将一个较大的项目转换成cpp的项目了。

      其它:

    nm ' [TW] ' ./obj | grep func_name
  • 相关阅读:
    C++ 类的多态一(virtual关键字--构造函数深刻理解)
    C++ 类的继承六(多继承的二义性--虚基类)
    C++ 类的继承五(类继承中的static关键字)
    C++ 类的继承四(类继承中的重名成员)
    C++ 类的继承三(继承中的构造与析构)
    C++ 类的继承二(赋值兼容性原则)
    C++ 类的继承一(访问控制)
    C++ 匿名对象产生场景
    WPF/ASP.NET:几个Prism中的术语
    Prism 5 + MEF中的ModuleCatalog.CreateFromXaml问题
  • 原文地址:https://www.cnblogs.com/abnk/p/11225088.html
Copyright © 2011-2022 走看看