zoukankan      html  css  js  c++  java
  • vim 用法

    http://blog.csdn.net/namecyf/article/details/7787479 vim配置及插件

    http://www.zhihu.com/question/35465970   知乎

    set nu              " 显示行号

    syntax on           " 语法高亮

    "set background=dark "背景使用黑色

    " 显示中文帮助
      if version >= 603
          set helplang=cn
          set encoding=utf-8
      endif

    “字体

    set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936
    set termencoding=utf-8
    set encoding=utf-8
    set fileencodings=ucs-bom,utf-8,cp936
    set fileencoding=utf-8

    " 自动缩进
    set autoindent
    set cindent

    " Tab键的宽度
    set tabstop=4

    "设置tab键的标识符

    set list
    set listchars=tab:▸ ,trail:.,extends:>,precedes:<

    " 统一缩进为4
    set softtabstop=4
    set shiftwidth=4

    "禁止生成临时文件
    set nobackup
    set noswapfile

    "搜索忽略大小写
    set ignorecase

    "搜索逐字符高亮
    set hlsearch
    set incsearch

    "语言设置
    set langmenu=zh_CN.UTF-8
    set helplang=cn

    colorscheme 配色方案

    " 侦测文件类型
    filetype on
    " 载入文件类型插件
    filetype plugin on

    "无用空格高亮

    highlight WhitespaceEOL ctermbg=red guibg=red
    match WhitespaceEOL /s+$/

    ”取消粘贴时自动注释

    set paste

    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

    "自动补全

    :inoremap ( ()<ESC>i

    :inoremap ) <c-r>=ClosePair(')')<CR>

    :inoremap { {<CR>}<ESC>O

    :inoremap } <c-r>=ClosePair('}')<CR>

    :inoremap [ []<ESC>i

    :inoremap ] <c-r>=ClosePair(']')<CR>

    "":inoremap " ""<ESC>i

    "":inoremap ' ''<ESC>i

    function! ClosePair(char)

        if getline('.')[col('.') - 1] == a:char

            return "<Right>"

        else

            return a:char

        endif

    endfunction

    """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

    "键盘命令

    """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""



    nmap <leader>w :w!<cr>

    nmap <leader>f :find<cr>



    " 映射全选+复制 ctrl+a

    map <C-A> ggVGY

    map! <C-A> <Esc>ggVGY

    map <F12> gg=G

    " 选中状态下 Ctrl+c 复制

    vmap <C-c> "+y

    "去空行  

    nnoremap <F2> :g/^s*$/d<CR>

    "比较文件  

    nnoremap <C-F2> :vert diffsplit

    "新建标签  

    map <M-F2> :tabnew<CR>  

    "列出当前目录文件  

    map <F3> :tabnew .<CR>  

    "打开树状文件目录  

    map <C-F3> e  

    "C,C++ 按F5编译运行

    map <F5> :call CompileRunGcc()<CR>

    func! CompileRunGcc()

        exec "w"

        if &filetype == 'c'

            exec "!g++ % -o %<"

            exec "! ./%<"

        elseif &filetype == 'cpp'

            exec "!g++ % -o %<"

            exec "! ./%<"

        elseif &filetype == 'java'

            exec "!javac %"

            exec "!java %<"

        elseif &filetype == 'sh'

            :!./%

        endif

    endfunc

    "C,C++的调试

    map <F8> :call Rungdb()<CR>

    func! Rungdb()

        exec "w"

        exec "!g++ % -g -o %<"

        exec "!gdb ./%<"

    endfunc

    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

    """""新文件标题""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

    "新建.c,.h,.sh,.java文件,自动插入文件头

    autocmd BufNewFile *.cpp,*.[ch],*.sh,*.java exec ":call SetTitle()"

    ""定义函数SetTitle,自动插入文件头

    func SetTitle()

        "如果文件类型为.sh文件

        if &filetype == 'sh'

            call setline(1,"#########################################################################")

            call append(line("."), "## File Name: ".expand("%"))

            call append(line(".")+1, "## Author: Chen Cesc")

            call append(line(".")+2, "## Created Time: ".strftime("%c"))

            call append(line(".")+3, "#########################################################################")

            call append(line(".")+4, "#!/bin/bash")

            call append(line(".")+5, "")

        else

            call setline(1, " /*************************************************************************")

            call append(line("."), "    > File Name: ".expand("%"))

            call append(line(".")+1, "    > Author: Chen Cesc")

            call append(line(".")+2, "    > Created Time: ".strftime("%c"))

            call append(line(".")+3, " ************************************************************************/")

            call append(line(".")+4, "")

        endif

        if &filetype == 'cpp'

            call append(line(".")+5, "#include<iostream>")

            call append(line(".")+6, "using namespace std;")

            call append(line(".")+7, "")

            call append(line(".")+8, "int main()")

            call append(line(".")+9, "{")

            call append(line(".")+10, "}")

        endif

        if &filetype == 'c'

            call append(line(".")+5, "#include<stdio.h>")

            call append(line(".")+6, "")

            call append(line(".")+7, "int main()")

            call append(line(".")+8, "{")

            call append(line(".")+9, "}")

        endif

        "新建文件后,自动定位到文件末尾

        autocmd BufNewFile * normal G

    endfunc

    /*********************************************************************************************************************************************************/

    命令行和快捷键操作:

    w, b 向后,向前跳一个词

    gd 和 ×一样搜索关键词

    zz 当前行画面居中

    Ctrl+a, 自动把光标下的数字加1。

    1.h j k l              分别指左下上右

    2.d$(end) d^(home)        删除至行尾,行首

    3.添加字符:

      :n1,n2 s/^/字符/       行前加字符

      :.,+5 s/^/字符/

      (ctrl+v) + (I) + 字符 + (esc)  在块选模式下指定区域快速填充字符

    4.替换:

      :s/old/new/g        当前行替换

      :%s/old/new/g       全文替换

      :n1,n2/old/new/g      指定行替换

      :%s/(good ice)/awesome/g  多文本替换

      :4,$ /d+/=submatch(0)+1/  把第4行到最后一行的第一个数字字符串加一

      :%s/.s*w/=toupper(submatch(0))/g  将每个句子的首字母变大写。 .s*w搜索模式,在句点后跟空格的第一个单词

    5.r!(cmd)            将cmd 的内容写到当前行。

    6.多窗口编辑

      :vsplit *.c          纵向

      :split *.c            横向

      vi -o *.c             为每个文件创建一个窗口

      纵向调整
      :ctrl+w + 纵向扩大(行数增加)
      :ctrl+w - 纵向缩小 (行数减少)
      :res(ize) num  例如::res 5,显示行数调整为5行
       :res(ize)+num 把当前窗口高度增加num行
       :res(ize)-num 把当前窗口高度减少num行
       横向调整
       :vertical res(ize) num 指定当前窗口为num列
       :vertical res(ize)+num 把当前窗口增加num列
       :vertical res(ize)-num 把当前窗口减少num列

      :previous 跳至上一个文件

      :n 跳至下一个文件,也可以直接指定要跳的文件,如:n c,可以直接跳到c文件
      :e# 回到刚才编辑的文件
      :Ex 开启目录浏览器,可以浏览当前目录下的所有文件,并可以选择
      :Sex 水平分割当前窗口,并在一个窗口中开启目录浏览器
      :ls 显示当前buffer情况

    7.TlistToggle (标签列表窗口)

    8.vimgrep(多文件查找)

      :vimgrep (search_thing) *.c  在当前.c文件中查找search_thing

      clist   -> cc(num)        列出所有查找到的项,cc(num)跳转到第几项

      cn              下一个匹配项

      cN              上一个匹配项

      clast/cfirst

     

      

  • 相关阅读:
    ASP.NET学习线路(转)
    创建variant二维数组
    域名”A记录,MX记录,CNAME记录,TTL值,URL转发”解释
    数据库表行转列,列转行终极方案(转)
    [转载]oracle备份与恢复精华资料
    事务的概念
    Velocity语言的介绍
    初步认识JUnit
    JSON基本用法
    matplotlib入门
  • 原文地址:https://www.cnblogs.com/chencesc/p/4287546.html
Copyright © 2011-2022 走看看