vim的强大功能如何获取
我不是Linux/UNIX的狂热爱好者,虽然我崇尚GNU的精神。我以前的开发都是在Windows平台使用VC编写C/C++程序,也使用Editplus写ASP/HTML等,偶尔使用SourceInsight尝试去浏览一些大的项目源码。在网络常常看到关于编辑器的争论,也就经常听到这样的话:"Vi和Emacs是世界上上最强的两个编辑器"。我在自己的PC上曾经安装过RedHat,但是通常不久之后,
·
我不是Linux/UNIX的狂热爱好者,虽然我崇尚GNU的精神。
我以前的开发都是在Windows平台使用VC编写C/C++程序,
也使用Editplus写ASP/HTML等,偶尔使用SourceInsight尝试去浏览一些
大的项目源码。
在网络常常看到关于编辑器的争论,也就经常听到这样的话:
"Vi和Emacs是世界上上最强的两个编辑器"。
我在自己的PC上曾经安装过RedHat,但是通常不久之后,我都把
它们给删除了。的确类似我这样不是很有目的的钻研Linux的人,
很快就觉得Linux使用不方便,Vi更实在是看不出来有什么好用。
经常就听到有人讲Vi是如何如何的强大,什么的都能干。
还往往举一些例子,诸如可以正则表达式搜索等。
不过在我平时的工作,真的是很少看到谁在编程写代码时需要这么专业的编辑
技巧。有时候在安装好Linux时,我仅仅就是希望vi能象Editplus一样
好好的工作就可以了,我都不敢奢望它象VC一样方便。
可是在常见的Linux/UNIX入门书上,无一例外都或先将一下Vi的使用,
而且通常都会介绍Insert Mode和Command Mode的区分,讲h,j,k,l
进行Move,讲:q, :wq, :q!退出,讲i,o,a插入,讲<escape>,
将dd, yy, p等Copy & Paste。(当然,这些是最基本的,你不得不会:-))
可是仅仅这些,我想大多数人真的很难觉得这是什么最强的编辑器。
感觉还不如Notepad,真是不明白啊 :-(。
我这样的初学Linux者,常常在网上或者bbs上看到的vi技巧
总是这些不实用的命令,就象关于替换%s/foo/bar/gc等等都会成为
技巧介绍的文章,的确好迷惑的,因为这些对于Windows下的编辑器都是很基本的。
为什么那么多的人说Vi/Vim是最好的编辑器啊?我想总是有原因的。
虽然出来讲的人常常就是一句话,Vi是最好的。用vim+gcc+gdb,
想干什么干什么,呵呵。我不是狂热的Vim推崇者,
我只是希望我在Linux/Unix下编程的时候能有一个好的工具。
当我偶然的访问了一下vim.sourceforge.net,下载了几个Top rated的
vim script和看完了Top rated的Tips,我的看法大有改变。
在花了一整天的时间学习和熟练这些Tip和Script后,我感到Vim还的确是
一个不错的工具了。
我先说说当我转到Vi进行编程时,我最希望有的一些功能,
这些功能可能很小,但是如果相当Editplus或VC没有时,我就觉得很不爽了。
当然也许是受Windows毒害太久了吧,呵呵。
1. 怎样才能比较方便的同时编辑多个文件,例如多个文件间切换,
Copy Paste内容等。
2. 我要在编辑文本中查找一个词,几乎书上教的都是使用"/word",
可是如果这个词就在光标下,我却要一个字符一个字符输入这个词,
不是很郁闷吗?例如:/i_want_to_search_this_long_word.
3. 我的工作主要是C/C++编程,真是希望能想VC一样,在左边能看到
项目的文件列表,和Class,Function,Struct的列表,并且选择了
就能跳到相应的位置。
4. 也是和编程相关的,在VC里面,Build了Browse Info后,F12就
可以很方便的在class ,variable, constant等的definition,
implementation or reference间跳转,这非常方便非常有用。
5. 在VC里面,在一个.C/.cpp文件中,对于include的文件,例如
#include "foo.h",你在foo处,<ctrl>+<shift>+g就可以跳到
这个头文件去,真是方便啊。难道vim不提供吗?
6. 要是能在Vi中象Explorer一样查看文件列表,并可以选择就好了。
还有更多的问题,我就不必逐一列举了,因为我这篇文章不是要当
百科书,而是给那些用过vi后来放弃了(:-),当然不是转去Emacs那种),
和初学Linux/vi,但看了书本但觉得Vi很不好用的人看的。
OK,上面6个问题的解决之道。
1. vim.sourceforge.net 下载排名No. 3的bufexplorer.vim
2. vim.sf.net中Tips的No. 1的 "Super Star", 呵呵,当光标在这个
词上的时候,按*号就可以,和在Editplus中按Ctrl+F3一样方便。
另一个技巧是写了开始查找的/后,<ctrl+r><ctrl+w>就可以把光标下的
词复制到command buffer处,非常有用的Tip。
3. a)想要看到Class,Struct等列表,你需要No. 1的taglist.vim,
有了它,Vim现在看着顺眼多了。b)希望有项目文件列表:你需要
No.7的Project.vim, 有了它们俩,VC的左侧窗口基本都模拟出来了。:-)
4. 有taglist.vim的帮助,你已经会觉得方便了许多,taglist需要ctags
才能实现,ctags的作用就是为C代码中Symbol建立tags,tags是什么?
你通过Vim的Help(:help)就明白了,挺象超链接的。可是ctags的功能
还不够强,因为这个工作cscope确实比它做的更好,也更强。如果你有兴趣
使用cscope,那你就应当看看cscope.sf.net,同时有很多的Vim版本是
没有内嵌cscope的支持的。你可以用在Vim中用:version查看。如果没有,
祝贺你,你有机会自己亲手把Vim编译一次了。呵呵,注意./configure
的时候--enable-cscope。有了cscope,用Vim看项目代码的确如虎添翼!
5. gf --就这么简单,呵呵。如果你还是找不到头文件,怎么办?
请:help path.正确设置头文件所在的path很重要。
6. Try :Ex and :Sex :e . and :e /usr/src,你就都明白了。
其它的
7. 一定要去vim.sf.net 上把Top10的script都放到自己的Vim中试试,
一定要把No.2的Tip保存下来,随时查看。
8. 我在xterm中使用vim,但发现长时间编程用gvim也很好,你可以
把desert.vim下载下来,色彩不错哦,还保护视力。gvim=vim -g
P.S.
就到这里吧,写这篇文章是因为我花了一整天的时间来学习Vim,
以及安装测试使用这些Scripts,总算觉得使用Vim比较入门和顺手了。
其实接触和使用Vi也很长时间了,但是从来没有去过vim.sf.net,所以
一直觉得Vi很不好用,现在看法改变了,希望这篇文章能帮助那些
希望学好Vim的朋友入门。:-)
如果你正在学习Emacs,那你一定要去www.emacswiki.org看看那些Tip,
下载其中的script。不过我已经觉得Vim足够好了。因为我喜欢Vi方式的
用j来移动光标,而不是Emacs那样的Ctrl+n, 需要两只手,呵呵。
引用自 http://www.smth.edu.cn/bbsgcon.php?board=LinuxApp&file=N/G.1061286675.00&num=1280
vim配置实例
set nocompatible
source $VIMRUNTIME/vimrc_example.vim
source $VIMRUNTIME/mswin.vim
behave mswin
set guifont=FixedsysTTF:h14 "如果没有这个字体那就不要加
set tabstop=8
set softtabstop=4
set shiftwidth=4
colorscheme blue "在gvim下可以看到有多少coloscheme
set sw=4 " shiftwidth
set et " expandtab
set wm=8 " wrapmargin
set bs=2 " backspace
set ru " ruler
set ic " ignorecase "忽略大小写 但是输入中有大写的话不忽略
set is " incsearch
set scs " smartcase: override the 'ic' when searching
" if search pattern contains uppercase char
set vb t_vb= " set visual bell and disable screen flash
set backup " enable backup and define the backup file
set backupext=.bak
set hlsearch " hlsearch
" allow backspacing over everything in
" the insert mode
set backspace=indent,eol,start
set dir=e:/tmp/vimswap/vim1,e:/tmp/vimswap/vim2,e:/tmp/vimswap/vim3,e:/tmp/vimswap/vim4
" 设置swap文件的目录上面
set backupdir=e:/tmp/vimswap/vim1,e:/tmp/vimswap/vim2,e:/tmp/vimswap/vim3,e:/tmp/vimswap/vim4
"设置备份文件的目录上面 我不喜欢看到每个目录下都有备份 因为一般备份用不到
set diffexpr=MyDiff()
function MyDiff()
let opt = ''
if &diffopt =~ 'icase' | let opt = opt . '-i ' | endif
if &diffopt =~ 'iwhite' | let opt = opt . '-b ' | endif
silent execute '!d:/tools/Vim/vim62/diff -a ' . opt . '"' . v:fname_in . '" "' . v:fname_new . '" > "' . v:fname_out . '"'
endfunction
"下面是设置自动folder的 而且是根据写C代码设置的 如果你不喜欢使用folder那么可以省略掉
au BufReadPost *.c,*.cpp syn region myFold start="{" end="}" transparent fold
au BufReadPost *.c,*.cpp syn sync fromstart
au BufReadPost *.c,*.cpp set foldmethod=syntax
set foldlevel=0
更全点的配置文件
" ----------------------------------------------------------------
" $Id: .vimrc.html,v 1.3 2003/06/16 23:29:15 thouveni Exp $
"
"
" Download <URL:http://touv.ouvaton.org/documents/MyDotFiles/.vimrc>
"
" ----------------------------------------------------------------
" -----------------------------------------------------------
" {{{ 1. General setup
" -----------------------------------------------------------
" enable backspace to delete anyting (includes /n) in insert mode
set backspace=2
" il parait que c'est mieux de ne pas 阾re compatible
set nocompatible
" ??? fait un bip lors d'une erreur
set errorbells
" Active les plugins et les indeantaions par type de fichier
filetype plugin indent on
" Quand on tape un ), vim montre furtivement le ( correspondant.
set showmatch
" On ne coupe pas les lignes si elles sont grandes
set nowrap
" ??? now real wrap during insert (enable/override this when using as mail-editor)
"set tw=0
" ??? use full featured format-options. see "help fo-table for help
if v:version >= 600
set formatoptions=tcrqn2
else
" vim 5 doesn't know r/n
set formatoptions=tcq2
endif
" define what are comments
set com& " reset to default
set com^=sr:*/ -,mb:*/ / ,el:*/ com^=sr:/// -,mb:/// / ,el:///
" Ajoute une marge ?gauche pour afficher les +/- des replis
set foldcolumn=2
" }}}
" -----------------------------------------------------------
" {{{ 2 Indentation
" -----------------------------------------------------------
" On garde d'une ligne ?l'autre l'indentation d'un paragraphe
set autoindent
" ???
set expandtab
" Nombre d'espace pour une tabulation
set shiftwidth=4
" if non-zero, number of spaces to insert for a <tab>
set softtabstop=4
" number of spaces the tab stands for
set tabstop=4
" some nice options for cindenting by FOLKE
set cinoptions={.5s,+.5s,t0,n-2,p2s,(03s,=.5s,>1s,=1s,:1s
" a <tab> in an indent insets 'shiftwidth' spaces (not tabstop)
"set smarttab
" smartindenting (clever autoindenting)
" set si
" }}}
" -----------------------------------------------------------
" {{{ 3. Searching, Substituting
" -----------------------------------------------------------
" On ignore la casse des caract鑢es dans les recherches de cha頽es.
set ignorecase
" No ignorecase if Uppercase chars in search
set scs
" change the way backslashes are used in search patterns
set magic
" begin search at top when EOF reached
set wrapscan
" jump to matches during entering the pattern
set sm
" highlight all matches...
set hls
" ...and also during entering the pattern
set incsearch
" !!! use 'g'-flag when substituting (subst. all matches in that line, not only first)
" to turn off, use g (why is there no -g ?)
" set gdefault
" !!! turn off the fucking :s///gc toggling
"set noedcompatible
" }}}
" -----------------------------------------------------------
" {{{ 4. Highlighting, Colors, Fonts
" -----------------------------------------------------------
" Active la coloration syntaxique quand c'est possible
if &t_Co > 2 || has("gui_running")
syntax on
endif
" Fond noir
set bg=dark
if has("gui_running")
"Nombre de colonnes ?afficher
set co=98
"Nombre de lignes ?afficher
set lines=41
" Choix d'une police
if has("win32")
set guifont=Fixedsys:h9:cANSI
"set guifont=Courier:h10:cANSI
else
set gfn=-adobe-courier-medium-r-normal-*-*-140-*-*-m-*-iso8859-15
endif
" Choix d'un theme de coloration
"colorscheme pablo
colorscheme darkblue
endif
" ??? how many lines to sync backwards
syn sync minlines=10000 maxlines=10000
" ??? how many lines to search backward after a jump to check syntax
let c_minlines = 200
" ??? aldo highlight some things in comments
let c_comment_strings = 1
" ??? SQL-Highlighting in PHP-Strings (1=yes 0=no)
" let php_sql_query = 1
" let php_minlines=300
" let php_htmlInStrings=1
" }}}
" -----------------------------------------------------------
" {{{ 4. Statusline, Menu
" -----------------------------------------------------------
" use tab for auto-expansion in menus
set wc=<TAB>
" show a list of all matches when tabbing a command
set wmnu
" how command line completion works
set wildmode=list:longest,list:full
" ignore some files for filename completion
set wildignore=*.o,*.r,*.so,*.sl,*.tar,*.tgz
" some filetypes got lower priority
set su=.h,.bak,~,.o,.info,.swp,.obj
" remember last 2000 typed commands
set hi=2000
" show cursor position below each window
set ruler
" shows the current status (insert, visual, ...) in statusline
set showmode
" use shortest messages
set shm=a
" show always statusline of last window
set laststatus=2
" }}}
" -----------------------------------------------------------
" {{{ 5. window handling
" -----------------------------------------------------------
" focus follows mouse
set mousef
" minimal number of lines used for the current window
set wh=1
" minimal number of lines used for any window
set wmh=0
" make all windows the same size when adding/removing windows
set noequalalways
"a new window is put below the current one
set splitbelow
" }}}
" -----------------------------------------------------------
" {{{ 6. file, backup, path
" -----------------------------------------------------------
" Le swap est mis ?jour apr閟 50 caract鑢es saisies
set uc=50
" R閜ertoire de sauvegarde automaitique
set backupdir=~/.backup
" On active la sauvagarde
set backup
if has("unix")
if v:version >= 600
set path=.,/usr/include,/usr/X11R6/include,/usr/local/include
else
set path=.,/usr/include,/usr/X11R6/include/,/usr/local/include
endif
endif
" change to directory of current file automatically
autocmd BufEnter * lcd %:p:h
" }}}
" -----------------------------------------------------------
" {{{ 7. UNIX Specials
" -----------------------------------------------------------
if has("unix")
set clipboard=autoselect
set shell=/bin/bash
endif
" }}}
" -----------------------------------------------------------
" {{{ 8. Mapping
" -----------------------------------------------------------
" Supprime tout les blancs en debut de ligne
nmap _S :%s/^/s/+//<CR>
" Converts file format to/from unix
command Unixformat :set ff=unix
command Dosformat :set ff=dos
" On fait tourner les tampons ...
nnoremap <C-N> :bn!<CR>
nnoremap <C-P> :bp!<CR>
" Annuler aka Undo (window$'s style)
noremap <C-Z> u
inoremap <C-Z> <C-O>u
" Refaire aka Redo (window$'s style)
noremap <C-Y> <C-R>
inoremap <C-Y> <C-O><C-R>
" Tout s閘閏tionner (window$'s style)
noremap <C-A> gggH<C-O>G
inoremap <C-A> <C-O>gg<C-O>gH<C-O>G
cnoremap <C-A> <C-C>gggH<C-O>G
" Indentation automatique (Emacs's style)
vnoremap <C-F> =$
vnoremap <tab> =
nnoremap <tab> =$
nnoremap <C-tab> mzvip=`z
" Fermer fichier (tampon) (window$'s style)
map <C-F4> :bd<cr>
imap <C-F4> <C-O>:bd<cr>
cmap <c-F4> <c-c>:bd<cr>
" Sauvegarder fichier (touv's style)
noremap <c-x><c-s> w<cr>
inoremap <c-x><c-s> <C-O>:w<cr>
" Ouvrir un fichier (Emacs's style)
"noremap <c-x><c-f> :e!
"inoremap <c-x><c-f> <c-O>:e!
" have <F1> prompt for a help topic, rather than displaying the introduction
" page, and have it do this from any mode:
nnoremap <F1> :help<Space>
vmap <F1> <C-C><F1>
omap <F1> <C-C><F1>
map! <F1> <C-C><F1>
" Force la fermeture d'un tampon
map <F4> :bd!<cr>
imap <F4> <C-O>:bd!<cr>
cmap <F4> <c-c>:bd!<cr>
" Fermer un tag (cf. closetag.vim)
inoremap <F5> <C-R>=GetCloseTag()<CR>
map <F5> a<C-_><ESC>
" Supprime tout les blancs en fin de ligne
map <F6> :%s//s/+$//<CR>
" Mets en commentaire
map <F7> <Leader>c
imap <F7> <esc><F7>
" active/d閟active la navigation par tags
nnoremap <silent> <F8> :Tlist<CR>
if has("gui_running")
" alt jumps to menu
set winaltkeys=menu
" clipboard to autoselect
set guioptions+=a
" Shift-Fleche pour selectionner un bloc
map <S-Up> vk
vmap <S-Up> k
map <S-Down> vj
vmap <S-Down> j
map <S-Right> v
vmap <S-Right> l
map <S-Left> v
vmap <S-Left> h
if has("win32") || has("win16")
" ...
else
" Couper aka Cut (generic's style)
vmap <S-Del> "*x
" Copier aka Copy (generic's style)
vmap <C-Insert> "*y
"vmap <Return> "*y" "Return realise la copie du bloc selectionner
"vmap <S-Return> "*y" "Shift Return aussi
" Coller aka Insert (generic's style)
function! NormalPaste()
if @* != ""
normal "*gP
endif
endfunction
function! SelectPaste()
if @* != ""
if col(".") < col("'<")
normal "*gp
else
normal "*gP
endif
endif
endfunction
"map <S-Insert> :call NormalPaste()<CR>
"imap <S-Insert> x<Esc>:call NormalPaste()<CR>s
"cmap <S-Insert> <C-R>*
"vmap <S-Insert> "-x:call SelectPaste()<CR>
endif
endif
" }}}
" -----------------------------------------------------------
" {{{ 9. Divers
" -----------------------------------------------------------
" use css when converting syntax to html (2html.vim)
let html_use_css = 1
" and a nice command for makeing html-code
command Code2html :source $VIMRUNTIME/syntax/2html.vim|
" }}}
" -----------------------------------------------------------
" {{{ 11. Templates
" -----------------------------------------------------------
if has("autocmd")
au BufNewFile *.xsl 0r~/.vim/templates/xsl.xsl
au BufNewFile *.xml 0r~/.vim/templates/xml.xml
au BufNewFile *.html 0r~/.vim/templates/html.html
au BufNewFile *.c 0r~/.vim/templates/c.c
au BufNewFile *.php 0r~/.vim/templates/php.php
endif
"}}}
" -----------------------------------------------------------
" {{{ 12. Sp閏ificit?pour chaque type de fichier
" -----------------------------------------------------------
autocmd FileType text setlocal textwidth=78
autocmd FileType text set nocindent
autocmd FileType html set formatoptions+=tl
autocmd FileType css set smartindent
autocmd FileType html,css set noexpandtab tabstop=2
autocmd FileType c,cpp,slang set cindent
autocmd FileType html,xml,xsl source ~/.vim/scripts/closetag.vim
"}}}
" vim:fdm=marker
应用自http://bbs.loveunix.net/viewthread.php?tid=3155
http://larc.ee.nthu.edu.tw/~cthuang/vim/vim-living.html#Vertical_Splitting
我以前的开发都是在Windows平台使用VC编写C/C++程序,
也使用Editplus写ASP/HTML等,偶尔使用SourceInsight尝试去浏览一些
大的项目源码。
在网络常常看到关于编辑器的争论,也就经常听到这样的话:
"Vi和Emacs是世界上上最强的两个编辑器"。
我在自己的PC上曾经安装过RedHat,但是通常不久之后,我都把
它们给删除了。的确类似我这样不是很有目的的钻研Linux的人,
很快就觉得Linux使用不方便,Vi更实在是看不出来有什么好用。
经常就听到有人讲Vi是如何如何的强大,什么的都能干。
还往往举一些例子,诸如可以正则表达式搜索等。
不过在我平时的工作,真的是很少看到谁在编程写代码时需要这么专业的编辑
技巧。有时候在安装好Linux时,我仅仅就是希望vi能象Editplus一样
好好的工作就可以了,我都不敢奢望它象VC一样方便。
可是在常见的Linux/UNIX入门书上,无一例外都或先将一下Vi的使用,
而且通常都会介绍Insert Mode和Command Mode的区分,讲h,j,k,l
进行Move,讲:q, :wq, :q!退出,讲i,o,a插入,讲<escape>,
将dd, yy, p等Copy & Paste。(当然,这些是最基本的,你不得不会:-))
可是仅仅这些,我想大多数人真的很难觉得这是什么最强的编辑器。
感觉还不如Notepad,真是不明白啊 :-(。
我这样的初学Linux者,常常在网上或者bbs上看到的vi技巧
总是这些不实用的命令,就象关于替换%s/foo/bar/gc等等都会成为
技巧介绍的文章,的确好迷惑的,因为这些对于Windows下的编辑器都是很基本的。
为什么那么多的人说Vi/Vim是最好的编辑器啊?我想总是有原因的。
虽然出来讲的人常常就是一句话,Vi是最好的。用vim+gcc+gdb,
想干什么干什么,呵呵。我不是狂热的Vim推崇者,
我只是希望我在Linux/Unix下编程的时候能有一个好的工具。
当我偶然的访问了一下vim.sourceforge.net,下载了几个Top rated的
vim script和看完了Top rated的Tips,我的看法大有改变。
在花了一整天的时间学习和熟练这些Tip和Script后,我感到Vim还的确是
一个不错的工具了。
我先说说当我转到Vi进行编程时,我最希望有的一些功能,
这些功能可能很小,但是如果相当Editplus或VC没有时,我就觉得很不爽了。
当然也许是受Windows毒害太久了吧,呵呵。
1. 怎样才能比较方便的同时编辑多个文件,例如多个文件间切换,
Copy Paste内容等。
2. 我要在编辑文本中查找一个词,几乎书上教的都是使用"/word",
可是如果这个词就在光标下,我却要一个字符一个字符输入这个词,
不是很郁闷吗?例如:/i_want_to_search_this_long_word.
3. 我的工作主要是C/C++编程,真是希望能想VC一样,在左边能看到
项目的文件列表,和Class,Function,Struct的列表,并且选择了
就能跳到相应的位置。
4. 也是和编程相关的,在VC里面,Build了Browse Info后,F12就
可以很方便的在class ,variable, constant等的definition,
implementation or reference间跳转,这非常方便非常有用。
5. 在VC里面,在一个.C/.cpp文件中,对于include的文件,例如
#include "foo.h",你在foo处,<ctrl>+<shift>+g就可以跳到
这个头文件去,真是方便啊。难道vim不提供吗?
6. 要是能在Vi中象Explorer一样查看文件列表,并可以选择就好了。
还有更多的问题,我就不必逐一列举了,因为我这篇文章不是要当
百科书,而是给那些用过vi后来放弃了(:-),当然不是转去Emacs那种),
和初学Linux/vi,但看了书本但觉得Vi很不好用的人看的。
OK,上面6个问题的解决之道。
1. vim.sourceforge.net 下载排名No. 3的bufexplorer.vim
2. vim.sf.net中Tips的No. 1的 "Super Star", 呵呵,当光标在这个
词上的时候,按*号就可以,和在Editplus中按Ctrl+F3一样方便。
另一个技巧是写了开始查找的/后,<ctrl+r><ctrl+w>就可以把光标下的
词复制到command buffer处,非常有用的Tip。
3. a)想要看到Class,Struct等列表,你需要No. 1的taglist.vim,
有了它,Vim现在看着顺眼多了。b)希望有项目文件列表:你需要
No.7的Project.vim, 有了它们俩,VC的左侧窗口基本都模拟出来了。:-)
4. 有taglist.vim的帮助,你已经会觉得方便了许多,taglist需要ctags
才能实现,ctags的作用就是为C代码中Symbol建立tags,tags是什么?
你通过Vim的Help(:help)就明白了,挺象超链接的。可是ctags的功能
还不够强,因为这个工作cscope确实比它做的更好,也更强。如果你有兴趣
使用cscope,那你就应当看看cscope.sf.net,同时有很多的Vim版本是
没有内嵌cscope的支持的。你可以用在Vim中用:version查看。如果没有,
祝贺你,你有机会自己亲手把Vim编译一次了。呵呵,注意./configure
的时候--enable-cscope。有了cscope,用Vim看项目代码的确如虎添翼!
5. gf --就这么简单,呵呵。如果你还是找不到头文件,怎么办?
请:help path.正确设置头文件所在的path很重要。
6. Try :Ex and :Sex :e . and :e /usr/src,你就都明白了。
其它的
7. 一定要去vim.sf.net 上把Top10的script都放到自己的Vim中试试,
一定要把No.2的Tip保存下来,随时查看。
8. 我在xterm中使用vim,但发现长时间编程用gvim也很好,你可以
把desert.vim下载下来,色彩不错哦,还保护视力。gvim=vim -g
P.S.
就到这里吧,写这篇文章是因为我花了一整天的时间来学习Vim,
以及安装测试使用这些Scripts,总算觉得使用Vim比较入门和顺手了。
其实接触和使用Vi也很长时间了,但是从来没有去过vim.sf.net,所以
一直觉得Vi很不好用,现在看法改变了,希望这篇文章能帮助那些
希望学好Vim的朋友入门。:-)
如果你正在学习Emacs,那你一定要去www.emacswiki.org看看那些Tip,
下载其中的script。不过我已经觉得Vim足够好了。因为我喜欢Vi方式的
用j来移动光标,而不是Emacs那样的Ctrl+n, 需要两只手,呵呵。
引用自 http://www.smth.edu.cn/bbsgcon.php?board=LinuxApp&file=N/G.1061286675.00&num=1280
vim配置实例
CODE
set nocompatible
source $VIMRUNTIME/vimrc_example.vim
source $VIMRUNTIME/mswin.vim
behave mswin
set guifont=FixedsysTTF:h14 "如果没有这个字体那就不要加
set tabstop=8
set softtabstop=4
set shiftwidth=4
colorscheme blue "在gvim下可以看到有多少coloscheme
set sw=4 " shiftwidth
set et " expandtab
set wm=8 " wrapmargin
set bs=2 " backspace
set ru " ruler
set ic " ignorecase "忽略大小写 但是输入中有大写的话不忽略
set is " incsearch
set scs " smartcase: override the 'ic' when searching
" if search pattern contains uppercase char
set vb t_vb= " set visual bell and disable screen flash
set backup " enable backup and define the backup file
set backupext=.bak
set hlsearch " hlsearch
" allow backspacing over everything in
" the insert mode
set backspace=indent,eol,start
set dir=e:/tmp/vimswap/vim1,e:/tmp/vimswap/vim2,e:/tmp/vimswap/vim3,e:/tmp/vimswap/vim4
" 设置swap文件的目录上面
set backupdir=e:/tmp/vimswap/vim1,e:/tmp/vimswap/vim2,e:/tmp/vimswap/vim3,e:/tmp/vimswap/vim4
"设置备份文件的目录上面 我不喜欢看到每个目录下都有备份 因为一般备份用不到
set diffexpr=MyDiff()
function MyDiff()
let opt = ''
if &diffopt =~ 'icase' | let opt = opt . '-i ' | endif
if &diffopt =~ 'iwhite' | let opt = opt . '-b ' | endif
silent execute '!d:/tools/Vim/vim62/diff -a ' . opt . '"' . v:fname_in . '" "' . v:fname_new . '" > "' . v:fname_out . '"'
endfunction
"下面是设置自动folder的 而且是根据写C代码设置的 如果你不喜欢使用folder那么可以省略掉
au BufReadPost *.c,*.cpp syn region myFold start="{" end="}" transparent fold
au BufReadPost *.c,*.cpp syn sync fromstart
au BufReadPost *.c,*.cpp set foldmethod=syntax
set foldlevel=0
更全点的配置文件
CODE
" ----------------------------------------------------------------
" $Id: .vimrc.html,v 1.3 2003/06/16 23:29:15 thouveni Exp $
"
"
" Download <URL:http://touv.ouvaton.org/documents/MyDotFiles/.vimrc>
"
" ----------------------------------------------------------------
" -----------------------------------------------------------
" {{{ 1. General setup
" -----------------------------------------------------------
" enable backspace to delete anyting (includes /n) in insert mode
set backspace=2
" il parait que c'est mieux de ne pas 阾re compatible
set nocompatible
" ??? fait un bip lors d'une erreur
set errorbells
" Active les plugins et les indeantaions par type de fichier
filetype plugin indent on
" Quand on tape un ), vim montre furtivement le ( correspondant.
set showmatch
" On ne coupe pas les lignes si elles sont grandes
set nowrap
" ??? now real wrap during insert (enable/override this when using as mail-editor)
"set tw=0
" ??? use full featured format-options. see "help fo-table for help
if v:version >= 600
set formatoptions=tcrqn2
else
" vim 5 doesn't know r/n
set formatoptions=tcq2
endif
" define what are comments
set com& " reset to default
set com^=sr:*/ -,mb:*/ / ,el:*/ com^=sr:/// -,mb:/// / ,el:///
" Ajoute une marge ?gauche pour afficher les +/- des replis
set foldcolumn=2
" }}}
" -----------------------------------------------------------
" {{{ 2 Indentation
" -----------------------------------------------------------
" On garde d'une ligne ?l'autre l'indentation d'un paragraphe
set autoindent
" ???
set expandtab
" Nombre d'espace pour une tabulation
set shiftwidth=4
" if non-zero, number of spaces to insert for a <tab>
set softtabstop=4
" number of spaces the tab stands for
set tabstop=4
" some nice options for cindenting by FOLKE
set cinoptions={.5s,+.5s,t0,n-2,p2s,(03s,=.5s,>1s,=1s,:1s
" a <tab> in an indent insets 'shiftwidth' spaces (not tabstop)
"set smarttab
" smartindenting (clever autoindenting)
" set si
" }}}
" -----------------------------------------------------------
" {{{ 3. Searching, Substituting
" -----------------------------------------------------------
" On ignore la casse des caract鑢es dans les recherches de cha頽es.
set ignorecase
" No ignorecase if Uppercase chars in search
set scs
" change the way backslashes are used in search patterns
set magic
" begin search at top when EOF reached
set wrapscan
" jump to matches during entering the pattern
set sm
" highlight all matches...
set hls
" ...and also during entering the pattern
set incsearch
" !!! use 'g'-flag when substituting (subst. all matches in that line, not only first)
" to turn off, use g (why is there no -g ?)
" set gdefault
" !!! turn off the fucking :s///gc toggling
"set noedcompatible
" }}}
" -----------------------------------------------------------
" {{{ 4. Highlighting, Colors, Fonts
" -----------------------------------------------------------
" Active la coloration syntaxique quand c'est possible
if &t_Co > 2 || has("gui_running")
syntax on
endif
" Fond noir
set bg=dark
if has("gui_running")
"Nombre de colonnes ?afficher
set co=98
"Nombre de lignes ?afficher
set lines=41
" Choix d'une police
if has("win32")
set guifont=Fixedsys:h9:cANSI
"set guifont=Courier:h10:cANSI
else
set gfn=-adobe-courier-medium-r-normal-*-*-140-*-*-m-*-iso8859-15
endif
" Choix d'un theme de coloration
"colorscheme pablo
colorscheme darkblue
endif
" ??? how many lines to sync backwards
syn sync minlines=10000 maxlines=10000
" ??? how many lines to search backward after a jump to check syntax
let c_minlines = 200
" ??? aldo highlight some things in comments
let c_comment_strings = 1
" ??? SQL-Highlighting in PHP-Strings (1=yes 0=no)
" let php_sql_query = 1
" let php_minlines=300
" let php_htmlInStrings=1
" }}}
" -----------------------------------------------------------
" {{{ 4. Statusline, Menu
" -----------------------------------------------------------
" use tab for auto-expansion in menus
set wc=<TAB>
" show a list of all matches when tabbing a command
set wmnu
" how command line completion works
set wildmode=list:longest,list:full
" ignore some files for filename completion
set wildignore=*.o,*.r,*.so,*.sl,*.tar,*.tgz
" some filetypes got lower priority
set su=.h,.bak,~,.o,.info,.swp,.obj
" remember last 2000 typed commands
set hi=2000
" show cursor position below each window
set ruler
" shows the current status (insert, visual, ...) in statusline
set showmode
" use shortest messages
set shm=a
" show always statusline of last window
set laststatus=2
" }}}
" -----------------------------------------------------------
" {{{ 5. window handling
" -----------------------------------------------------------
" focus follows mouse
set mousef
" minimal number of lines used for the current window
set wh=1
" minimal number of lines used for any window
set wmh=0
" make all windows the same size when adding/removing windows
set noequalalways
"a new window is put below the current one
set splitbelow
" }}}
" -----------------------------------------------------------
" {{{ 6. file, backup, path
" -----------------------------------------------------------
" Le swap est mis ?jour apr閟 50 caract鑢es saisies
set uc=50
" R閜ertoire de sauvegarde automaitique
set backupdir=~/.backup
" On active la sauvagarde
set backup
if has("unix")
if v:version >= 600
set path=.,/usr/include,/usr/X11R6/include,/usr/local/include
else
set path=.,/usr/include,/usr/X11R6/include/,/usr/local/include
endif
endif
" change to directory of current file automatically
autocmd BufEnter * lcd %:p:h
" }}}
" -----------------------------------------------------------
" {{{ 7. UNIX Specials
" -----------------------------------------------------------
if has("unix")
set clipboard=autoselect
set shell=/bin/bash
endif
" }}}
" -----------------------------------------------------------
" {{{ 8. Mapping
" -----------------------------------------------------------
" Supprime tout les blancs en debut de ligne
nmap _S :%s/^/s/+//<CR>
" Converts file format to/from unix
command Unixformat :set ff=unix
command Dosformat :set ff=dos
" On fait tourner les tampons ...
nnoremap <C-N> :bn!<CR>
nnoremap <C-P> :bp!<CR>
" Annuler aka Undo (window$'s style)
noremap <C-Z> u
inoremap <C-Z> <C-O>u
" Refaire aka Redo (window$'s style)
noremap <C-Y> <C-R>
inoremap <C-Y> <C-O><C-R>
" Tout s閘閏tionner (window$'s style)
noremap <C-A> gggH<C-O>G
inoremap <C-A> <C-O>gg<C-O>gH<C-O>G
cnoremap <C-A> <C-C>gggH<C-O>G
" Indentation automatique (Emacs's style)
vnoremap <C-F> =$
vnoremap <tab> =
nnoremap <tab> =$
nnoremap <C-tab> mzvip=`z
" Fermer fichier (tampon) (window$'s style)
map <C-F4> :bd<cr>
imap <C-F4> <C-O>:bd<cr>
cmap <c-F4> <c-c>:bd<cr>
" Sauvegarder fichier (touv's style)
noremap <c-x><c-s> w<cr>
inoremap <c-x><c-s> <C-O>:w<cr>
" Ouvrir un fichier (Emacs's style)
"noremap <c-x><c-f> :e!
"inoremap <c-x><c-f> <c-O>:e!
" have <F1> prompt for a help topic, rather than displaying the introduction
" page, and have it do this from any mode:
nnoremap <F1> :help<Space>
vmap <F1> <C-C><F1>
omap <F1> <C-C><F1>
map! <F1> <C-C><F1>
" Force la fermeture d'un tampon
map <F4> :bd!<cr>
imap <F4> <C-O>:bd!<cr>
cmap <F4> <c-c>:bd!<cr>
" Fermer un tag (cf. closetag.vim)
inoremap <F5> <C-R>=GetCloseTag()<CR>
map <F5> a<C-_><ESC>
" Supprime tout les blancs en fin de ligne
map <F6> :%s//s/+$//<CR>
" Mets en commentaire
map <F7> <Leader>c
imap <F7> <esc><F7>
" active/d閟active la navigation par tags
nnoremap <silent> <F8> :Tlist<CR>
if has("gui_running")
" alt jumps to menu
set winaltkeys=menu
" clipboard to autoselect
set guioptions+=a
" Shift-Fleche pour selectionner un bloc
map <S-Up> vk
vmap <S-Up> k
map <S-Down> vj
vmap <S-Down> j
map <S-Right> v
vmap <S-Right> l
map <S-Left> v
vmap <S-Left> h
if has("win32") || has("win16")
" ...
else
" Couper aka Cut (generic's style)
vmap <S-Del> "*x
" Copier aka Copy (generic's style)
vmap <C-Insert> "*y
"vmap <Return> "*y" "Return realise la copie du bloc selectionner
"vmap <S-Return> "*y" "Shift Return aussi
" Coller aka Insert (generic's style)
function! NormalPaste()
if @* != ""
normal "*gP
endif
endfunction
function! SelectPaste()
if @* != ""
if col(".") < col("'<")
normal "*gp
else
normal "*gP
endif
endif
endfunction
"map <S-Insert> :call NormalPaste()<CR>
"imap <S-Insert> x<Esc>:call NormalPaste()<CR>s
"cmap <S-Insert> <C-R>*
"vmap <S-Insert> "-x:call SelectPaste()<CR>
endif
endif
" }}}
" -----------------------------------------------------------
" {{{ 9. Divers
" -----------------------------------------------------------
" use css when converting syntax to html (2html.vim)
let html_use_css = 1
" and a nice command for makeing html-code
command Code2html :source $VIMRUNTIME/syntax/2html.vim|
" }}}
" -----------------------------------------------------------
" {{{ 11. Templates
" -----------------------------------------------------------
if has("autocmd")
au BufNewFile *.xsl 0r~/.vim/templates/xsl.xsl
au BufNewFile *.xml 0r~/.vim/templates/xml.xml
au BufNewFile *.html 0r~/.vim/templates/html.html
au BufNewFile *.c 0r~/.vim/templates/c.c
au BufNewFile *.php 0r~/.vim/templates/php.php
endif
"}}}
" -----------------------------------------------------------
" {{{ 12. Sp閏ificit?pour chaque type de fichier
" -----------------------------------------------------------
autocmd FileType text setlocal textwidth=78
autocmd FileType text set nocindent
autocmd FileType html set formatoptions+=tl
autocmd FileType css set smartindent
autocmd FileType html,css set noexpandtab tabstop=2
autocmd FileType c,cpp,slang set cindent
autocmd FileType html,xml,xsl source ~/.vim/scripts/closetag.vim
"}}}
" vim:fdm=marker
应用自http://bbs.loveunix.net/viewthread.php?tid=3155
http://larc.ee.nthu.edu.tw/~cthuang/vim/vim-living.html#Vertical_Splitting
更多推荐
已为社区贡献12条内容
所有评论(0)