官方发布

Linux大棚版vimrc配置

本原创文章属于《Linux大棚》博客。

博客地址为http://roclinux.cn

文章作者为roc。

==

新年伊始,Linux大棚发布的第一篇文章是有关vim的,面向那些已经熟悉vim使用的同学们,你们可以通过这篇文章,了解到一些常用的.vimrc的配置方法,也可以直接用到自己的.vimrc中,来提高工作效率。

==

.vimrc文件,是一个著名的隐藏文件,它用来控制vim编辑器的各类属性和行为。当你打开vim时,它会很自觉地去读.vimrc的各条命令,老老实实地遵照去做。所以,掌握.vimrc的配置方法,是掌控vim的前提和关键。

在.vimrc配置文件中, 每一行可以写一个命令,不同的命令以换行符隔开。如果你想写注释的话,请使用双引号,注释方法如下:

"comment: This is rocinux's vim tutorial
syntax on "comment: color grammar

可见,你既可以在行首就开始写注释,也可以在命令后面追加注释内容。

好了,现在给出Linux大棚版.vimrc的配置及相应注释信息:

$ cat .vimrc
"==
"Author :roc
"Website:roclinux.cn
"Version:1.0
"==

"按编程语言的语法,对代码进行彩色标示,术语叫做语法高亮
syntax on

"显示行数标示
set number

"打开状态栏的坐标信息
set ruler

"取消底部状态栏显示。1为关闭,2为开启。
set laststatus=1

"将输入的命令显示出来,便于查看当前输入的信息
set showcmd

"设置魔术匹配控制,可以通过:h magic查看更详细的帮助信息
set magic

"设置vim存储的历史命令记录的条数
set history=100

"下划线高亮显示光标所在行
set cursorline

"插入右括号时会短暂地跳转到匹配的左括号
set showmatch

"搜索时忽略大小写
set ignorecase

"不对匹配的括号进行高亮显示
let loaded_matchparen=1

"在执行宏命令时,不进行显示重绘;在宏命令执行完成后,一次性重绘,以便提高性能。
set lazyredraw

"设置一个tab对应4个空格
set tabstop=4

"在按退格键时,如果前面有4个空格,则会统一清除
set softtabstop=4

"cindent对c语法的缩进更加智能灵活,
"而shiftwidth则是在使用<和>进行缩进调整时用来控制缩进量。
"换行自动缩进,是按照shiftwidth值来缩进的
set cindent shiftwidth=4

"最基本的自动缩进
set autoindent shiftwidth=4

"比autoindent稍智能的自动缩进
set smartindent shiftwidth=4

"将新增的tab转换为空格。不会对已有的tab进行转换
set expandtab

"高亮显示搜索匹配到的字符串
set hlsearch

"在搜索模式下,随着搜索字符的逐个输入,实时进行字符串匹配,并对首个匹配到的字符串高亮显示
set incsearch

"设置自定义快捷键的前导键
let mapleader=","

"利用前导键加b,则可以在一个单子两边加上大括号
map b wbi{<Esc>ea}<Esc>

"使用前导键加w来实现加速文件保存,来代替:w!加回车
nmap w :w!<CR>

"匹配那些末尾有空格或TAB的行。(es:Endspace Show)
map es :/.*\s\+$<CR>

"删除行末尾的空格或TAB(ed:Endspace Delete)
map ed :s#\s\+$##<CR>

"如果所选行的行首没有#,则给所选行行首加上注释符#(#a:# add)
map #a :s/^\([^#]\s*\)/#\1/<CR>

"如果所选行行首有#,则将所选行行首所有的#都去掉(#d:# delete)
map #d :s/^#\+\(\s*\)/\1/<CR>

"如果所选行的行首没有//,则给所选行行首加上注释符//(/a:/ add)
map /a :s/^\([^\/\/]\s*\)/\/\/\1/<CR>

"如果所选行行首有//,则将所选行行首的//都去掉(/d:/ delete)
map /d :s/^\/\/\(\s*\)/\1/<CR>

补充知识:

map模式,可谓是vim的杀手锏之一,用户可以使用map来自由定义适合自己的快捷键方案,达到方便使用、提高效率的目的。在此,Linux大棚总结了vim的map模式的相关命令,便于大家配置自己的.vimrc时查询。

vim编辑器的map模式
vim编辑器的map模式

谢谢!

5条评论

  1. 前导键不是要加?

    “利用前导键加b,则可以在一个单子两边加上大括号
    map b wbi{ea}
    ” map b wbi{ea}

    “使用前导键加w来实现加速文件保存,来代替:w!加回车
    nmap w :w!
    ” nmap w :w!

  2. hi..问个问题。。
    我的.vimrc新增了这句
    map ff :silent 1,$!xmllint –format –recover – 2>/dev/null
    但是我在用的时候,就是我敲ff后

    底部出现:silent 1,$!xmllint –format –recover – 2>/dev/null

    然后我按enter键,没有格式化xml内容。而是出现:
    Usage : xmllint [options] XMLfiles …
    Parse the xml files…..
    …..

  3. ~/.vimrc.html

    1 set nu
    2 set noswf
    3 set smartindent
    4 set backspace=start,eol,indent
    5 set shiftwidth=4
    6 set tabstop=4 softtabstop=4
    7 "set expandtab
    8 set maxmempattern=100000
    9 set hlsearch
    10 set incsearch
    11 set ruler
    12 set fileencodings=ucs-bom,utf8,cp936,gbk,gb18030
    13 set list listchars=tab:│┈
    14 set ff=unix
    15 set cursorline
    16 set showmatch
    17 set lazyredraw
    18 syntax enable
    19 filetype plugin on
    20 filetype indent on
    21 inoremap <S-CR> <ESC>A^M
    22 inoremap jk ^[
    23 nnoremap ^M o^[
    24 nnoremap <S-CR> O^[
    25 set laststatus=2 statusline=%.45F\ %m\%=\|%{&fileencoding?&fileencoding:&encoding}\|%{&fileformat}\|%{&filetype}\ %4l,%c\ <%L>
    26
    27 function Shit(left,right)
    28 let nextChar=getline(‘.’)[col(‘.’)]
    29 if nextChar==# "" || nextChar =~# ‘\v(\s|\)|\]|\})’
    30 execute "normal! a" . a:left . a:right
    31 else
    32 execute "normal! a" . a:left . "^[l"
    33 endif
    34 endfunction
    35 function Damn(right)
    36 let nextChar=getline(‘.’)[col(‘.’)]
    37 if nextChar==# a:right
    38 normal! l
    39 else
    40 execute "normal! a" . a:right
    41 endif
    42 endfunction
    43
    44 function Fuck(left)
    45 let nextChar=getline(‘.’)[col(‘.’)]
    46 if nextChar==# a:left
    47 normal! l
    48 elseif nextChar==#"" || nextChar =~# ‘\v[^:alnum:_]’
    49 execute "normal! a" . a:left . a:left . "^[h"
    50 else
    51 execute "normal! a" . a:left
    52 endif
    53 endfunction
    54 function Suck(left)
    55 let nextChar=getline(‘.’)[col(‘.’)]
    56 if nextChar =~# ‘\v\s’
    57 execute "normal! a" . a:left
    58 else
    59 execute "normal! a" . a:left . " "
    60 endif
    61 endfunction
    62 augroup python_style
    63 "{{{
    64 autocmd!
    65 autocmd FileType python nnoremap <buffer> \c I#^[
    66 autocmd FileType python nnoremap <buffer> \u :.s/^\v(\s*)#/\1/^M:nohlsearch^M
    67 autocmd FileType python vnoremap <buffer> \c :s/^/#/^M:nohlsearch^M
    68 autocmd FileType python vnoremap <buffer> \u :s/^\v(\s*)#/\1/^M:nohlsearch^M
    69 autocmd FileType python inoremap <buffer> ( ^[:call Shit(‘(‘,’)’)^Mi
    70 autocmd FileType python inoremap <buffer> ) ^[:call Damn(‘)’)^Ma
    71 autocmd FileType python inoremap <buffer> [ ^[:call Shit(‘[‘,’]’)^Mi
    72 autocmd FileType python inoremap <buffer> ] ^[:call Damn(‘]’)^Ma
    73 autocmd FileType python inoremap <buffer> { ^[:call Shit(‘{‘,’}’)^Mi
    74 autocmd FileType python inoremap <buffer> } ^[:call Damn(‘}’)^Ma
    75 autocmd FileType python inoremap <buffer> " ^[:call Fuck(‘"’)^Ma
    76 autocmd FileType python inoremap <buffer> ‘ ^[:call Fuck("’")^Ma
    77 autocmd FileType python inoremap <buffer> , ^[:call Suck(",")^Ma
    78 autocmd FileType python inoreabbrev <buffer> def def():^[hhi
    79 autocmd FileType python inoreabbrev <buffer> class class():^[hhi
    80 autocmd FileType python inoremap <buffer> jl ^[la
    81 " match ErrorMsg /\%>80v.\+/
    82 "}}}
    83 augroup END
    84 augroup vim_style
    85 "{{{
    86 autocmd!
    87 autocmd FileType vim setlocal foldmethod=marker
    88 autocmd FileType vim nnoremap <buffer> \c I"^[
    89 autocmd FileType vim nnoremap <buffer> \u :.s/^\v(\s*)"/\1/^M:nohlsearch^M
    90 autocmd FileType vim vnoremap <buffer> \c :s/^/"/^M:nohlsearch^M
    91 autocmd FileType vim vnoremap <buffer> \u :s/^^\v(\s*)"/\1/^M:nohlsearch^M
    92 "}}}
    93 augroup END
    94

  4. 我用的 vimrc
    -------------------------------

    set nu
    set noswf
    set smartindent
    set backspace=start,eol,indent
    set shiftwidth=4
    set tabstop=4 softtabstop=4
    “set expandtab
    set maxmempattern=100000
    set hlsearch
    set incsearch
    set ruler
    set fileencodings=ucs-bom,utf8,cp936,gbk,gb18030
    set list listchars=tab:│┈
    set ff=unix
    set cursorline
    set showmatch
    set lazyredraw
    syntax enable
    filetype plugin on
    filetype indent on
    inoremap A
    inoremap jk 
    nnoremap
    o
    nnoremap O
    set laststatus=2 statusline=%.45F\ %m\%=\|%{&fileencoding?&fileencoding:&encoding}\|%{&fileformat}\|%{&filetype}\ %4l,%c\

    function Shit(left,right)
    let nextChar=getline(‘.’)[col(‘.’)]
    if nextChar==# “” || nextChar =~# ‘\v(\s|\)|\]|\})’
    execute “normal! a” . a:left . a:right
    else
    execute “normal! a” . a:left . “l”
    endif
    endfunction
    function Damn(right)
    let nextChar=getline(‘.’)[col(‘.’)]
    if nextChar==# a:right
    normal! l
    else
    execute “normal! a” . a:right
    endif
    endfunction

    function Fuck(left)
    let nextChar=getline(‘.’)[col(‘.’)]
    if nextChar==# a:left
    normal! l
    elseif nextChar==#”” || nextChar =~# ‘\v[^:alnum:_]’
    execute “normal! a” . a:left . a:left . “h”
    else
    execute “normal! a” . a:left
    endif
    endfunction
    function Suck(left)
    let nextChar=getline(‘.’)[col(‘.’)]
    if nextChar =~# ‘\v\s’
    execute “normal! a” . a:left
    else
    execute “normal! a” . a:left . ” ”
    endif
    endfunction
    augroup python_style
    “{{{
    autocmd!
    autocmd FileType python nnoremap \c I#
    autocmd FileType python nnoremap \u :.s/^\v(\s*)#/\1/
    :nohlsearch
    autocmd FileType python vnoremap \c :s/^/#/
    :nohlsearch
    autocmd FileType python vnoremap \u :s/^\v(\s*)#/\1/
    :nohlsearch
    autocmd FileType python inoremap ( :call Shit(‘(‘,’)’)
    i
    autocmd FileType python inoremap ) :call Damn(‘)’)
    a
    autocmd FileType python inoremap [ :call Shit(‘[‘,’]’)
    i
    autocmd FileType python inoremap ] :call Damn(‘]’)
    a
    autocmd FileType python inoremap { :call Shit(‘{‘,’}’)
    i
    autocmd FileType python inoremap } :call Damn(‘}’)
    a
    autocmd FileType python inoremap ” :call Fuck(‘”‘)
    a
    autocmd FileType python inoremap ‘ :call Fuck(“‘”)
    a
    autocmd FileType python inoremap , :call Suck(“,”)
    a
    autocmd FileType python inoreabbrev def def():hhi
    autocmd FileType python inoreabbrev class class():hhi
    autocmd FileType python inoremap jl la
    ” match ErrorMsg /\%>80v.\+/
    “}}}
    augroup END
    augroup vim_style
    “{{{
    autocmd!
    autocmd FileType vim setlocal foldmethod=marker
    autocmd FileType vim nnoremap \c I”
    autocmd FileType vim nnoremap \u :.s/^\v(\s*)”/\1/
    :nohlsearch
    autocmd FileType vim vnoremap \c :s/^/”/
    :nohlsearch
    autocmd FileType vim vnoremap \u :s/^^\v(\s*)”/\1/
    :nohlsearch
    “}}}
    augroup END
    ---------------------------------

    不过直接粘上来有些特殊字符打印不出来,可能有点乱,将就看把。

发表您的评论

请您放心,您的信息会被严格保密。必填项已标识 *