1.vi的基本概念:
基本上vi可以分为三种状态,分别是命令模式(commandmode)、插入模式(Insert mode)和底行模式(last line mode),
1)命令行模式控制屏幕光标的移动,字符、字或行的删除,移动复制某区段
2)只有在插入模式下,才可以做文字输入,按[ESC]键可回到命令行模式。
3)底行模式将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等。
2.vi的基本操作
在系统提示符号输入vi及文件名称后,就进入vi全屏幕编辑画面例如:$ vi myfile; 进入vi之后,是命令模式;
在命令模式下,按一下字母「i」可以进入插入模式, 再按一下[ESC]键转回到命令模式;在命令模式中,连按两次大写字母Z,若当前编辑的文件曾被修改过,则Vi保存该文件后退出,返回到shell;若当前编辑的文件没被修改过,则Vi直接退出, 返回到shell。
退出vi及保存文件,在命令行模式下,按一下[:]冒号键进入底行模式,例如:
:w //Vi保存当前编辑文件,但并不退出,而是继续等待用户输入命令。在使用w命令时,可以再给编辑文件起一个新的文件名。
: w filename //输入[w filename]将文件以指定的文件名filename保存;若filename已存在则会提示File exists (use ! to override), 使用:w! filename 将覆盖后保存。
: wq //输入[wq],存盘并退出vi
:q //系统退出Vi返回到shell。若在用此命令退出Vi时,编辑文件没有被保存,则提示No writesince last change (use ! to overrides),然后Vi并不退出,继续等待用户命令.
:q! //不存盘强制退出vi
:x //功能与命令模式下的ZZ命令功能相同。
命令备忘:
ctrl -w] 分割窗口
ctrl -双击w 轮换窗口
使用记录:
使用系统粘贴板 Shift+Inset 相当于普通编辑器下的Ctrl+v
vim配置简介:
参考:http://hi.baidu.com/soulingm/blog/item/58f73ff976c2bc869f514676.html 或 http://blog.csdn.net/wooin/article/details/1858917
增加对中文的支持
方法1
.在Linux下vim显示utf-8编码的文件乱码,比如一个文件用utf-8编码,文件头:
1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
使用VIM编辑,中文显示会是乱码。
解决:只需要在Linux的VIM下面一行命令:set encoding=utf-8 termencoding=gbk 显示中文就没有问题了。
但保存时会有问题,提示:“CONVERSION ERROR ” 需要再加一行:set fileencoding=utf-8
总结:编辑一个utf-8的文件,在VIM使用命令::set encoding=utf-8 termencoding=gbk fileencoding=utf-8
方法2
在.vimrc文件中加下面三行
set fileencodings=ucs-bom,utf-8,cp936
set fileencoding=utf-8
set encoding=cp936
高亮语法:
1.编辑_vimrc文件加入以下内容:
set nu!
colorscheme desert
syntax enable
syntax on
2.~\vim73\syntax 文件夹下选择需要编辑的源文件类型,如c.vim,cpp.vim, java.vim 加入以下内容:
"========================================================
" Highlight All Function
"========================================================
syn match cFunction "/<[a-zA-Z_][a-zA-Z_0-9]*/>[^()]*)("me=e-2
syn match cFunction "/<[a-zA-Z_][a-zA-Z_0-9]*/>/s*("me=e-1
hi cFunction gui=NONE guifg=#B5A1FF
"========================================================
" Highlight All Math Operator
"========================================================
" C math operators
syn match cMathOperator display "[-+/*/%=]"
" C pointer operators
syn match cPointerOperator display "->/|/."
" C logical operators - boolean results
syn match cLogicalOperator display "[!<>]=/="
syn match cLogicalOperator display "=="
" C bit operators
syn match cBinaryOperator display "/(&/||/|/^/|<</|>>/)=/="
syn match cBinaryOperator display "/~"
syn match cBinaryOperatorError display "/~="
" More C logical operators - highlight in preference to binary
syn match cLogicalOperator display "&&/|||"
syn match cLogicalOperatorError display "/(&&/|||/)="
" Math Operator
hi cMathOperator guifg=#3EFFE2
hi cPointerOperator guifg=#3EFFE2
hi cLogicalOperator guifg=#3EFFE2
hi cBinaryOperator guifg=#3EFFE2
hi cBinaryOperatorError guifg=#3EFFE2
hi cLogicalOperator guifg=#3EFFE2
hi cLogicalOperatorError guifg=#3EFFE2
程序中跳转。ec57w32.zip 地址http://prdownloads.sourceforge.net/ctags/ec57w32.zip
将ec57w32.zip解压,在解压后文件夹中找到ctags.exe,将其复制到~Vim\vim73下,并编辑_vimrc文件,添加以下内容:
set tags=tags;
set autochdir
打开cmd命令行,切换到你要查看的源代码的根目录处,运行
ctags -R *
将会在此目录处生成一个tags文件。
按下"ctrl+]",光标会自动跳转到定义处;按下"ctrl+T"会跳回到原来的位置。
源文件有更新时,重新运行ctags -R命令,更新tags文件
窗口管理。
winmanager.zip 地址http://www.vim.org/scripts/download_script.php?src_id=754
将winmanager.zip解压和拷贝,在_vimrc文件中加入以下内容:
""""""""""""""""""""""""""""""
" winManager setting
""""""""""""""""""""""""""""""
let g:winManagerWindowLayout = "BufExplorer,FileExplorer|TagList"
let g:winManagerWidth = 30
let g:defaultExplorer = 0
let g:winManagerWindowLayout='FileExplorer|TagList'
nmap wm :WMToggle<cr>
"nmap <silent> <leader>wm :WMToggle<cr>
normal模式下键入“wm”进入
taglist_45.zip 地址http://www.vim.org/scripts/download_script.php?src_id=7701
将taglist_45.zip解压,解压后包含一个doc文件夹和一个plugin文件夹,将其中内容分别复制到~\Vim\vim73下的doc及plugin中。
在_vimrc文件中加入以下内容:
let Tlist_Show_One_File=1 "不同时显示多个文件的tag,只显示当前文件的
let Tlist_Exit_OnlyWindow=1 "如果taglist窗口是最后一个窗口,则退出vim
letTlist_Use_Right_Window = 1 "在右侧窗口中显示taglist窗口
用gvim打开代码文件(已生成过tags文件),:Tlist,TagList窗口即出现。
<CR> 跳到光标下tag所定义的位置,用鼠标双击此tag功能也一样
o 在一个新打开的窗口中显示光标下tag
<Space> 显示光标下tag的原型定义
u 更新taglist窗口中的tag
s 更改排序方式,在按名字排序和按出现顺序排序间切换
x taglist窗口放大和缩小,方便查看较长的tag
+ 打开一个折叠,同zo
- 将tag折叠起来,同zc
* 打开所有的折叠,同zR
= 将所有tag折叠起来,同zM
[[ 跳到前一个文件
]] 跳到后一个文件
q 关闭taglist窗口
<F1> 显示帮助
使用命令:TlistOpen打开,使用:TlistClose 关闭,或者使用”:TlistToggle“在打开和关闭间切换。
使用<F9>键就可以打开/关闭taglist窗口:
map <silent> <F9> :TlistToggle<cr>
[缓冲区浏览] BufExplorer插件在下载:http://vim.sourceforge.net/scripts/script.php?script_id=42
vimrc配置:
""""""""""""""""""""""""""""""" BufExplorer
""""""""""""""""""""""""""""""
let g:bufExplorerDefaultHelp=0 " Do not show default help.
let g:bufExplorerShowRelativePath=1 " Show relative paths.
let g:bufExplorerSortBy='mru' " Sort by most recently used.
let g:bufExplorerSplitRight=0 " Split left.
let g:bufExplorerSplitVertical=1 " Split vertically.
let g:bufExplorerSplitVertSize = 30 " Split width
let g:bufExplorerUseCurrentWindow=1 " Open in new window.
autocmd BufWinEnter \[Buf\ List\] setl nonumber
多文件编辑。minibufexpl.vim 地址http://www.vim.org/scripts/download_script.php?src_id=3640
将minibufexpl.vim复制到~\Vim\vim73\plugin,在_vimrc中添加:
let g:miniBufExplMapCTabSwitchBufs=1
let g:miniBufExplMapWindowsNavVim=1
let g:miniBufExplMapWindowNavArrows=1
ctrl+Tab,切换到前一个buffer,并在当前窗口打开文件;
ctrl+shift+Tab,切换到后一个buffer,并在当前窗口打开文件;
ctrl+箭头键,可以切换到上下左右窗口中;
ctrl+h,j,k,l,切换到上下左右的窗口中。
在工程中快速查找。grep.vim 地址http://www.vim.org/scripts/download_script.php?src_id=7645
将grep.vim复制到~\Vim\vim73\plugin,在_vimrc中添加:
nnoremap <silent> <F3> :Grep<CR>
用gvim打开源码文件,并将光标定位到要查找的内容上,按下F3,确定要查找的内容和搜索范围,gvim会在弹出的QuickFix窗口中列出所有符合条件的搜索结果。
.高亮的书签。 visualmark.vim 地址http://www.vim.org/scripts/download_script.php?src_id=4700
将visualmark.vim复制到~\Vim\vim73\plugin。
用gvim打开源码文件,将光标定位在需要添加书签的地方,按下ctrl+F2,如果是vim用"mm", 即添加了书签。使用F2在书签之间正向切换,shift+F2反向切换。