`
gaopenghigh
  • 浏览: 246095 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

我的轻度定制vim

阅读更多
vim的学习曲线又陡又长,但它的功能和可定制性实在太强大,一个熟练的用户加上一个高度定制化的vim能够达到很高的效率,在加上熟练地运用vim的各种高级功能是很酷的一件事,于是我决定近期内不再尝试其它的编辑器,逐步地打造适合自己的vim。下面记录的,都是我自己觉得很有用的,或者是容易忘记的,这篇文章的内容也会是逐步丰富的。

技巧们:
gd跳到变量声明的地方
<Ctrl> + ]跳到定义的地方,需要ctags事先生成tag文件
<Ctrl> + o返回之前的位置
5 + <Ctrl> + ^跳到第5号buffer
<Ctrl> + PgUp/PgDn在tab间跳
:ls列出buffer
<Ctrl> + g显示当前编辑文件中当前光标所在行位置以及文件状态信息
:r FILENAME向当前文件中插入另外的文件的内容
J把两行连起来
f/F单字符查找命令,最有用的移动命令之一,"fx" 命令向前查找本行中的字符 x。"F" 命令则用于向左查找。
tx命令与 "fx" 相似,但它只把光标移动到目标字符的前一个字符上。
H,M,L分别代表移到当前视野的Home, Middle, Last处
:qall全部退出
:wqall全部保存退出


vim中的替换:
%表示全文匹配
:s/old/new/g当前行中所有old替换成new;
:%s/old/new/表示将全文中old替换成new,但每行只替换第一个单词;
:%s/old/new/g表示将全文中所有出现过的old替换成new (所有都替换);
%s/old/new/gc全文替换, 替换前询问; d 删除 g/china/d;


我的vimrc如下:
" 轻度定制的VIM
" JH Gao <gaopenghigh@gmail.com>
"
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => 全局设置
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Turn backup off
set nobackup
set nowb
set noswapfile

set autoread        " Set to auto read when a file is changed from the outside
set hid             "Change buffer - without saving

" map leader键设置
" With a map leader it's possible to do extra key combinations
" like <leader>w saves the current file
let mapleader = ","
let g:mapleader = ","

set showcmd         " Show (partial) command in status line.
set showmatch       " Show matching brackets.
"set ignorecase     " Do case insensitive matching
set linebreak       " 整词换行
set smartcase       " Do smart case matching
set incsearch        " 输入字符串就显示匹配点
set hlsearch        " high light search results
set autowrite       " 自动把内容写回文件
"set hidden         " Hide buffers when they are abandoned
"set mouse=a        " Enable mouse usage (all modes)
set nu

"--状态行设置--
set title           " show title in console title bar
set laststatus=2 " 总显示最后一个窗口的状态行;设为1则窗口数多于一个的时候显示最后一个窗口的状态行;0不显示最后一个窗口的状态行
set ruler            " 标尺,用于显示光标位置的行号和列号,逗号分隔。每个窗口都有自己的标尺。如果窗口有状态行,标尺在那里显示。否则,它显示在屏幕的最后一行上。

" 编码设置
set fenc=utf-8
set fencs=utf-8,usc-bom,euc-jp,gb18030,gbk,gb2312,cp936

" 重新打开一个文件时跳到上一次编辑的地方
if has("autocmd")
  au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
endif


""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => 界面设置
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
runtime! debian.vim
syntax on
set background=dark
colorscheme default  "设置配色方案,vim自带的配色方案保存在/usr/share/vim/vim73/colors目录
" Python 的关键字设置
let python_highlight_all = 1
au FileType python syn keyword pythonDecorator True None False self


""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => 格式设置tabs and indent
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
set tabstop=4
set shiftwidth=4
set smarttab
set expandtab       "输入:re可以把tab替换为空格
set autoindent
set ai              "Auto indent
set si              "Smart indet
set wrap            "Wrap lines

" 删除末尾的空格,对python等很有用
func! DeleteTrailingWS()
  exe "normal mz"
  %s/\s\+$//ge
  exe "normal `z"
endfunc

autocmd BufWrite *.py,*.t2t,*.sh :call DeleteTrailingWS()

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => 在tabs和windows之间移动
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" Tab设置, <leader> 已经被设为','
map <leader>tn :tabnew<cr>
map <leader>te :tabedit
map <leader>tc :tabclose<cr>
map <leader>tm :tabmove

" 按<F2>在新tab中编辑文件, 注意下一行末尾是有个空格的:)
nnoremap <F2> :tabedit

" 按<F8>把所有buffer变成tab显示出来
let notabs = 1
nnoremap <silent> <F8> :let notabs=!notabs<Bar>:if notabs<Bar>:tabo<Bar>:else<Bar>:tab ball<Bar>:tabn<Bar>:endif<CR>

" 按 ,<Tab> 和 ,` 移动到下一个/上一个tab
set switchbuf=usetab
nnoremap <leader><Tab> :sbnext<CR>
nnoremap <leader>` :sbprevious<CR>

" 按 ,1 ,2 ,3等跳到相应的tab
map <leader>1 1gt
map <leader>2 2gt
map <leader>3 3gt
map <leader>4 4gt
map <leader>5 5gt
map <leader>6 6gt
map <leader>7 7gt
map <leader>8 8gt
map <leader>9 9gt


"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => Cope, 还不太理解怎么用这个东东
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Do :help cope if you are unsure what cope is. It's super useful!
map <leader>cc :botright cope<cr>
map <leader>n :cn<cr>
map <leader>p :cp<cr>

""""""""""""""""""""""""""""""
" => 插件设置
""""""""""""""""""""""""""""""

set autoindent

" 用vundle来管理插件
set nocompatible
filetype off " required!

set rtp+=~/.vim/vundle.git/
call vundle#rc()

" Use Vundle to Manage Vundle
Bundle 'gmarik/vundle'
" 安装的插件 
Bundle 'genutils'
Bundle 'taglist.vim'
Bundle 'TaskList.vim'
Bundle 'django.vim'
Bundle 'jQuery'
Bundle 'a-new-txt2tags-syntax'
Bundle 'python.vim'
Bundle 'Syntastic'
Bundle 'pyflakes'
Bundle 'L9'
Bundle 'FuzzyFinder'

filetype plugin indent on

" Syntastic
let g:syntastic_python_checker = 'pylint'
"let g:syntastic_python_checker_args = '--rcfile /etc/pylint.conf -d C0301'
"let g:syntastic_quiet_warnings=1

" NERDTree, 这个插件没法用vundle安装
let NERDTreeShowBookmarks = 1
" 按F3打开文件导航窗口
map <silent> <F3> :NERDTreeFind<cr>

" FuzzyFinder
map <leader>F :FufFile<CR>
map <leader>f :FufTaggedFile<CR>
map <leader>g :FufTag<CR>
map <leader>b :FufBuffer<CR>

" txt2tags
au BufNewFile,BufRead *.t2t set ft=txt2tags

"  ctags 和 taglist
" 按下F4重新生成tag文件,并更新taglist
map <F4> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR><CR> :TlistUpdate<CR>
imap <F4> <ESC>:!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR><CR> :TlistUpdate<CR>
set tags=tags
set tags+=./tags "add current directory's generated tags file
let Tlist_Ctags_Cmd = '/usr/bin/ctags'
let Tlist_Show_One_File = 1            "不同时显示多个文件的tag,只显示当前文件的
let Tlist_Exit_OnlyWindow = 1          "如果taglist窗口是最后一个窗口,则退出vim
let Tlist_Show_One_File=0              "让taglist可以同时展示多个文件的函数列表
let Tlist_File_Fold_Auto_Close=1       "非当前文件,函数列表折叠隐藏
let Tlist_Use_Right_Window = 1         "在右侧窗口中显示taglist窗口
let Tlist_Process_File_Always = 1      "aglist始终解析文件中的tag,不管taglist窗口有没有打开
" 用 F9 来打开/关闭taglist页面
map <silent> <F9> :TlistToggle<cr>

" pyflakes
" map <silent> <F7> :call pyflakes()<CR>

" python.vim
" Shortcuts:
"   ]t      -- Jump to beginning of block
"   ]e      -- Jump to end of block
"   ]v      -- Select (Visual Line Mode) block
"   ]<      -- Shift block to left
"   ]>      -- Shift block to right
"   ]#      -- Comment selection
"   ]u      -- Uncomment selection
"   ]c      -- Select current/previous class
"   ]d      -- Select current/previous function
"   ]<up>   -- Jump to previous line with the same/lower indentation
"   ]<down> -- Jump to next line with the same/lower indentation

" TaskList.vim
" <leader>t打开TODO的list window

"""""""""""""""""""""""""""""""""""""""""""""
" =>自动运行这个文件(python, bash, lua, perl)
"""""""""""""""""""""""""""""""""""""""""""""

" 写python或shell时经常需要做单元测试, 设置按下<F10>就用相应的解释器运行这个文件
map <F10> :call AutoRun(input('argv : '))<cr>

func AutoRun(par)
    let par = a:par
    exec "w"
    if &filetype == 'sh'
        let cmd = "!bash % ".par
    elseif &filetype == 'python'
        let cmd = "!python % ".par
    elseif &filetype == 'perl'
        let cmd = "!perl % ".par
    elseif &filetype == 'lua'
        let cmd = "!lua % ".par
    endif
    exec cmd
endfunc
0
1
分享到:
评论
1 楼 niwtsew 2012-02-28  
nice!
add several more which I'm using

command Q q!
command Qa qa!

"and some cscope related
cs add $HOME/temp/jdk1.5.0_15/cscopejdk1.5.0_15.out

相关推荐

    我的全能Vim插件及配置

    在“我的全能Vim插件及配置”这个主题中,我们将深入探讨如何利用Vim的插件和个性化配置来提升编程效率。 首先,`_vimrc`文件是Vim的启动配置文件,也称为`.vimrc`或`_vimrc`(根据操作系统不同,文件名可能略有...

    vim plugin vim changes to ide update

    每个用户都可以根据自己的需求定制vimrc,包含快捷键绑定、颜色方案、自动缩进规则等。在这个上下文中,可能意味着更新vimrc以引入新添加的插件并优化它们的使用。例如,你可能需要在vimrc中添加对wintagexplorer....

    vim-configure.tar.gz_vim_vim_configure

    .vimrc 是 Vim 的启动配置文件,用于定制编辑器的行为。 接下来,将配置文件应用到你的 Vim 安装中,你需要将.vimrc 文件复制或链接到你的家目录下。通常,在终端执行 `cp vim-configure/.vimrc ~/.vimrc` 或 `ln -...

    开源项目-vim-vim.zip

    通过.vimrc文件,用户可以根据个人喜好定制Vim的各种设置,如快捷键、颜色方案、启动行为等。这种高度的自定义能力使得每个Vim用户都能拥有独一无二的编辑体验。 在Vim的“vim-master”目录中,包含了源代码、文档...

    vim的c.vim和cpp.vim文件

    通过替换默认的文件,你可以定制Vim对这些语言的语法高亮,使得代码更加易读,提升编程体验。 高亮显示函数名称在编程时极其重要,因为函数是代码逻辑的核心部分。当函数名被突出显示时,可以更容易地追踪调用链,...

    我的vim7.3

    总的来说,“我的vim7.3”是一个包含了VIM7.3版本及其个性化配置和字体的集合,旨在为用户提供一个高效、舒适且定制化的代码编辑环境。通过安装和使用这个压缩包,你可以体验到作者精心调整过的Vim设置,同时也可以...

    VIM FOR PHP配置

    在`.vimrc`中,你可以定制VIM的行为,例如设置颜色方案、启用或禁用某些插件、调整缓冲区大小、设置自动缩进等。对于PHP开发,可能已经配置了如自动完成、代码高亮、语法检查等相关选项。 2. **ctags**:这是一个...

    笨方法学 Vim Script

    通过实践和探索,你可以逐步提升在 Vim 编辑器中的效率和定制化能力。Vim Script 是 Vim 编辑器的核心,它允许你自定义命令、映射键位、编写插件以及实现各种自动化任务。 学习 Vim Script 首先要了解它的基础语法...

    Linux中vim安装包

    **Linux中的Vim编辑器** Vim(Vi Improved)是一款强大的...Vim的学习曲线虽然陡峭,但它的强大功能和高度可定制性使其成为许多开发者的心头好。通过不断实践和学习,可以掌握Vim的各种技巧,让编辑工作变得更为高效。

    ubuntu离线安装vim

    在Ubuntu系统中,Vim(Vi IMproved)是一款强大的文本编辑器,被广泛用于编程和其他文本操作。...Vim作为一款高度可定制的编辑器,安装完成后,你还可以通过`.vimrc`文件进行个性化配置,以满足个人的工作习惯。

    我的vim插件集

    "我的vim插件集"很可能是一个用户自定义的Vim配置集合,包含了他/她常用的一些插件,旨在提升Vim的使用体验和工作效率。 在Vim的世界里,插件是扩展其功能的关键。通过安装各种插件,我们可以让Vim具备代码高亮、...

    vim 配置 vim 配置

    Vim是一款强大的文本编辑器,其高度可定制性使得用户能够根据个人喜好和需求进行配置。在本文中,我们将深入探讨如何配置Vim,特别是关于字符编码的设置,以确保在处理不同编码的文件时避免乱码问题。 首先,我们要...

    Vim QT版本源代码

    Vim(Vi IMproved)是一款强大的文本编辑器,深受程序员和系统管理员的喜爱。它以其高效、高度可配置和丰富的命令集而闻名。...通过编译和安装,你可以根据自己的需求定制Vim,享受更加便捷的文本编辑体验。

    我的vim 的c语言的设置

    以下是对“我的vim的C语言设置”的详细解释。 首先,`.vimrc`文件是Vim的配置文件,它包含了用户自定义的设置和快捷键映射。通过编辑`.vimrc`,我们可以定制Vim的行为以适应特定的需求,如C语言编程。以下是一些...

    Vim的.vim文件夹和.vimrc配置文件

    Vim是一款强大的文本编辑器,深受程序员和系统管理员的喜爱,其可高度自定义的特性使得用户可以根据个人喜好和工作需求定制自己的编辑环境。在Vim中,`.vim`文件夹和`.vimrc`配置文件是两个至关重要的元素,它们帮助...

    ubuntu-ubuntu升级vim-安装指定版本vim.pdf

    Vim是一款功能强大的文本编辑器,因其高效性和可定制性受到广大开发者的喜爱。在Ubuntu系统中,默认安装的Vim版本可能无法满足某些用户的特定需求,比如需要使用最新版本的功能或者对某个特定版本有依赖关系。本文将...

    vim.zip vim安装包 解压可用

    Vim以其高效、轻量级和高度可定制性而闻名,对于代码编写和文本处理有着极高的效率。 二、Vim的安装 1. 下载与获取:在本例中,你已经拥有了一个名为"vim.zip"的压缩包,这通常可以通过访问Vim官方网站或者通过第三...

    我的vim附带vimrc

    "我的vim附带vimrc"这个标题表明这是一个包含作者个人定制的Vim配置文件(vimrc)的压缩包,用于优化和个性化Vim的使用体验,使其更适合C、C++和Python等编程语言的开发。 Vimrc是Vim的初始化脚本,它允许用户...

    vimconfig_tags_vim_

    Vim是一款功能强大的文本编辑器,深受程序员和高级用户喜爱,它的高度可定制性和高效操作方式使得它在编程环境中非常受欢迎。在这个主题中,我们将深入探讨如何配置Vim以及如何利用ctags来提升代码导航的效率。 ...

    vim插件a.vim

    vim作为一款强大的文本编辑器,因其高度可定制性和丰富的扩展性而备受程序员喜爱。`a.vim`插件是专门为程序员设计的,特别是那些在C/C++等语言中频繁处理源代码和头文件的开发者。通过这款插件,用户可以快速地在...

Global site tag (gtag.js) - Google Analytics