#vim73
##插件
###Pathogen GitHub官网:https://github.com/tpope/vim-pathogen
插件网址:http://www.vim.org/scripts/script.php?script_id=2332
是一款用于管理vim插件的插件,可以理解成是vim的插件加载器,通过Pathogen,可以将不同的插件放到不同的目录里,这样,各个插件之间的文件都独立于自己的目录,删除一个插件,只要直接删除这个插件的目录就行了,不用再vimfiles下一个一个的找了。
###Taglist 插件网址:http://www.vim.org/scripts/script.php?script_id=273
简介
TagList插件,是一款基于ctags,在vim代码窗口旁以分割窗口形式显示当前的代码结构概 览,增加代码浏览的便利程度的vim插件。
安装
上网下载Taglist插件[1],下载完成后解压,再将文件下的taglist.vim使用cp命令拷贝 到HOME/.vim/plugin文件夹下(cp -r taglist.vim ~/.vim/plugin)
配置
使用sudo vim /etc/vim/vimrc 编辑vim的配置文档,在其中加入如下命令:
"""""""""""""""""Taglist设置"""""""""""""""""
""let Tlist_Auto_Open = 1
let Tlist_Ctags_Cmd = '/usr/bin/ctags'
let Tlist_Show_One_File = 1
let Tlist_Exit_OnlyWindow = 1
使用
在Vim中加载代码文件后,可以使用以下命令控制taglist TlistOpen(直接Tlist也可)打开并将输入焦点至于标签列表窗口,效果如上图所示
TlistClose关闭标签列表窗口 TlistToggle切换标签列表窗口状态(打开←→关闭),标签列表窗口是否获得焦点取决于 其他配置。
###TxtBrowser http://www.vim.org/scripts/script.php?script_id=2899
以下内容来源于:http://xbeta.info/vim-txtbrowser.htm
TxtBrowser是一款Vim插件,旨在提供更好的txt浏览体验。主要功能有:为纯文本自动生 成目录树侧边栏(taglist窗口)、语法高亮、多项扩展功能(执行url、网络搜索当前词 等)。TxtBrowser由国内网友ypguo开发,近期更新活跃,并且解决了taglist.vim插件不 能处理中文文件路径的问题,值得关注。
功能展示
以下是功能简介,更多请参见作者介绍,以及官方下载包中的txtbrowser.cnx文件。
1.目录树侧边栏
用Vim打开纯文本类型的文件(.txt 或 :se ft=txt),键入一条命令(:Tlist)或 按下对应热键(可自定义,示例如下),会生成目录树侧边栏(即taglist窗口)。在目 录栏点击相应标签,正文会相应跳转。目录栏的内容既包括正文目录,也包括图片目录、 表格目录,并可进一步自定义。更新正文后,键入命令(:TlistUpdate)或按下对应热键 (可自定义,示例如下),即可刷新目录栏。
:nmap <silent> <F8> <ESC>:Tlist<RETURN>
:noremap <silent> <F5> <ESC>:TlistUpdate<RETURN>
2.语法高亮
纯文本也可以“多姿多彩”!TxtBrowser可以使关键文字高亮显示,突出显示标题、 关键字、列举项。可以提高效率,愉悦心情。通过 :colorscheme colorname 命令,可以 尝试不同的着色方案。
3.其他扩展功能
安装及使用笔记
重要说明:以下内容为xbeta试用当时的记录,有些地方不适用于后续版本TxtBrowser。 比如,taglist插件出了修正版,.ctags文件不再需要……
说明:编程人员对tag、ctags、taglist都很熟悉。但对于象我这样不编程的用户来 说,因为TxtBrowser而第一次安装、使用这些东西,还是比较复杂的。记录如下,并提供 对初学者友好地解释。
安装ctags(http://ctags.sourceforge.net/),ctags是一款程序(exe),用来生成tag文件。tag文件可以理解成索引——某个目录项、关键词……出现在哪个文件的哪一行。下载 Source and binary for Windows 98/NT/2000/XP,即 ctags58.zip。只需要把其中的 ctags.exe(约300KB)解压到 windows 目录(或其他在path的目录)。
安装taglist(http://www.vim.org/scripts/script.php?script_id=273) 重要说明:由于官方taglist.vim对中文支持有问题,推荐修订版本。把插件的内容复制到vim安装目录/vimfiles/中。以我为例,新增如下内容:
d:\soft\Vim\vimfiles\plugin\taglist.vim d:\soft\Vim\vimfiles\doc\taglist.txt
安装TxtBrowser(http://www.vim.org/scripts/script.php?script_id=2899) 除了大部分内容复制到vimfiles目录,一定要注意 .ctags 文件要复制到 “$Home” 目录。$home可以简单地理解为 c:\Documents and Settings\用户ID\。以我为例,新增 如下内容: d:\soft\Vim\vimfiles\plugin\txtbrowser.vim (生成目录、扩展功能所用的插件) d:\soft\Vim\vimfiles\doc\txtbrowser.cnx (帮助文档) d:\soft\Vim\vimfiles\doc\txtbrowser.txt (帮助文档) d:\soft\Vim\vimfiles\syntax\txt.vim (语法高亮文件) c:\Documents and Settings\zyx.ctags (重要:定义文件文件中,哪些文本生成tag)
在.vimrc文件里加入:
syntax on let tlist_txt_settings = 'txt;c:content;f:figures;t:tables' au BufRead,BufNewFile *.txt setlocal ft=txt
重启vim,打开 http://www.rfc-editor.org/rfc/rfc959.txt ,执行命令 :Tlist, 应该能看到效果了。
###Engspchk http://www.vim.org/scripts/script.php?script_id=195 英文拼写检查插件。
###tagbar http://www.vim.org/scripts/script.php?script_id=3465
类似于Taglist的插件,通过使用,简单的列了几点比taglist优化了的地方。
1.支持头文件的函数列表显示 细心的读者可能会发现,tagbar对函数的可见级别也是做了区分的,分别用+ - # 并配合着色来做了区分
2.对面向对象的支持更好,taglist虽然也会列出类列表,但是整体还是很不直观
3.自动根据文件修改时间来重建,taglist在这一点上体验就很不好,其实明明可以通过这种时间戳的方式来实现
既然tagbar有这么多好处,那我们就赶紧看看怎么用吧~
1.在官网上下载tagbar.vba文件,并执行:so %
2.在vimrc中加入如下配置
nmap <silent> <F4> :TagbarToggle<CR>
let g:tagbar_ctags_bin = 'ctags'
let g:tagbar_width = 30
3.按下F4即可显示列表
###Auto-Pair
http://www.vim.org/scripts/script.php?script_id=3599
vs装了va之后,输入{,[这些符号时,都会自动完成配对的},],虽然工作量非常小,但是实际使用起来的时候还是赶紧方便了不少,因为不需要输入{,然后输入},最后再定位到{}之间。在vim下,auto pairs这一插件正好提供了这个功能。
他的功能有:
补全对称的 {, [, ', "等符号 自动补空格,当输入{时,你会得到{|},这样的符号 中间的|代表光标所在位置(下同,|都代表光标所在位置,不再提醒) 然后按空格的时候,会自动在光标两边各加入一个空格,结果就是{ | },而不是{ |}. 自动插入新行,输入{|}时,按回车,会自动插入新行,结果会是这样 { | } 新行是带正确缩进的。 输入时跳过',},]等符号,例如: 在{ | }这种情况下,你输入}的时候,会跳过后面的那个},而不是输入多一个} 定位},],例如在 { | } 或者 [ | ]这种情况下,输入}或],会跳到匹配的}或]符号后面。 快速包装一个单词,如果你已经输入了一个单词word,现在想在外面加入一层括号,就可以在word前先输入一个括号,结果是这样(|)word,然后按alt+e,那么结果就是(word). 这写都是比较常用的功能,其他更详细的介绍可以查看help。
##技巧
转自http://blog.csdn.net/strategycn/article/details/7620261
默认的状态行,左侧显示当前打开的文件名,右侧显示当前所处的行列位置。当你执行 Vim命令时,状态行将消失并显示命令输入及输出。
通常状态行用反色显示。你可以通过修改highlight选项中的s字符来改变。例如,sb设置 为粗体字。如果状态行没有启用高亮 (sn),那么字符^表示当前窗口,字符=表示其它窗 口。如果支持鼠标并且已经通过设置mouse选项使之启动,那么你可以用鼠标拖动状态行 以改变窗口的大小。
定制状态行
我们可以使用以下命令来定义状态行:
:set statusline format
例如下面的命令:
:set statusline=The file is"%f"
其中,%用来指明一个特殊区域。例如%f,将在状行中包含文件名。
选项包含printf风格的%项目,中间可以间杂普通文本。内容默认为右对齐,如果希望左对齐,那么可以在%后面加上-。数字内容是忽略开头0显示的,如果需要显示前导0,那么可以在%后加上一个"0"。单个百分号可以用"%%"给出。最多可给出80个项目。
如果此选项以 "%!" 开始,它用作表达式。计算此表达式的结果用作选项值。
参数列表
显示状态行
即使已经使用以上命令设置选项,状态行还是保持原样,这是因为Vim在默认情况下是不显示状态行的,而仅显示命令缓冲区等极少的信息。我们可以使用以下命令,将状态行显示在窗口底部倒数第二行:
:set laststatus=2
你也可以使用以下命令,移去状态行:
:set laststatus=0
状态行实例
利用以下命令,可以在状态行中显示:当前文件名,文件格式(DOS, Unix),文件类型 (XHTML),当前位置和文件总行数。
:set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%04l,%04v][%p%%]\ [LEN=%L]
除了显示的内容,你还可以使用以下命令定义显示的颜色。
:set statusline=%2*%n%m%r%h%w%*\ %F\ %1*[FORMAT=%2*%{&ff}:%{&fenc!=''?&fenc:&enc}%1*]\ [TYPE=%2*%Y%1*]\ [COL=%2*%03v%1*]\ [ROW=%2*%03l%1*/%3*%L(%p%%)%1*]\
需要使用以下命令,自定义高亮显示颜色。
hi User1 guifg=gray
hi User2 guifg=red
hi User3 guifg=white
你还可以通过在_vimrc文件中包括以下命令,使状态行根据状态的不同,显示不同的颜色。
function! InsertStatuslineColor(mode)
if a:mode == 'i'
hi statusline guibg=peru
elseif a:mode == 'r'
hi statusline guibg=blue
else
hi statusline guibg=black
endif
endfunction
au InsertEnter * call InsertStatuslineColor(v:insertmode)
au InsertLeave * hi statusline guibg=orange guifg=white
hi statusline guibg=black
状态行的文件名部分,在插入状态时显示为橘色背景,这样就能很明显地提醒我们所处的状态.
命令小结
:set statusline format 定制状态行
:set laststatus 显示/取消状态行
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 技巧记录
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"(01):set all 可以查看所有已配置的选项
"(02)在每行文本前添加行号:
" :g/^/exec "s/^/".strpart(line(".")." ", 0, 4)
" :%s/^/\=strpart(line('.')." ", 0, 4)
" 可视模式下:
" :s/^/\=strpart((line('.')-line("'<")+1)." ", 0, 4)
"(03)移除Windows的换行符^M:
" noremap <Leader>m :%s/\r//g<CR>
" :%s/^M$/ 注意:^M==ctrl+v+m;$表示行尾
"(04)移除空行中的缩进空白字符:
" map <F2> :%s/s*$//g<cr>:noh<cr>''
"(05)在每行开头加#:
"% s/^/#/g
"(06)删除技巧
"删除空行 :g/^$/d
"删除以#开头的行 :g/^#/d
"删除至文档尾部 dG
"删除至文档开头 d1G
"(07)替换技巧
":%s/src_str/dest_str/g
":start_line,end_lines/src_str/dest_str/g
":%s/^{/{^M#if 0/g 所有函数体开头加#if 0
":%s/^}$/#endif^M}/g 所有函数体结尾加#endif
"其中^M为先按Ctrl+v,然后回车得到
"替换命令最后加g表示替换所有,不加表示替换第一个
"(08)sed替换
":%s/^{/{\r#if 0/g 同11的第一条命令
"sed 的 -i 选项表示在原文件上修改
"(09)
"map <F9> ggVGg?
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Tip: Insert if/endif around block of code
" One of my favorite macros that I use in vim (and vi) inserts a #if 0 #endif
" sandwich around a block of code. I always map this to the 2 key sequence ;'
" which is the semi-colon followed by the single quote. Look at your keyboard,
" you will notice these keys are adjacent to one another. I like this mapping
" because it's very fast, my fingers easily roll from one key to the next,
" obviously YMMV.
" To use this mapping, go to the line of code that you want the '#if 0' to be
" on, type ma to mark this line with the marker a, then move to the line that
" should be last line just above the '#endif' and press ;'
"
" insert #if 0 - #endif around block of code
" map ;' mz'aO<Esc>i#if 0<Esc>'zo<Esc>i#endif<Esc>
" Comments
"
" You could also modify this just a bit and make it a vmap, that way you
" wouldn't need to mark the beginning of the line set (though not vi
" compatible).
" vmap ;' '<O<Esc>i#if 0<Esc>'>o<Esc>i#endif<Esc>
" What about removing '#if 0...'? It should be easy to do.
" I like to do this with a range argument as well - "3;'" in your case.
" However, you get all this with various schemes for commenting/uncommenting
" code...
" I tweaked it a bit by using 0<C-D> (instead of <Esc>i) and made a version
" for Perl by replacing '#if 0' with '=pod' and '#endif' with '=cut'.
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。