Vim

Vim之Tab缩进

set tabstop=4


1. tabstop:表示一个 tab 显示出来是多少个空格,默认 8


2. softtabstop:在编辑的时候(比如按退格或 tab 键)一个 tab 是多少个空格

3. expandtab/noexpandtab:将 tab 扩展/不扩展成空格

4. shiftwidth:每一级缩进是多少个空格

5. smarttab:根据文件中其他地方的缩进空格个数来确定一个 tab 是多少个空格


http://www.imkeke.net/vim-2/vim-tab-config.html

Vim删除

d0

删除至行首

d$

删除至行尾

删除功能一览:http://blog.csdn.net/v1v1wang/article/details/5463783


Vim打造成IDE

——将VIM打造成IDE教程

linux:http://blog.csdn.net/wooin/article/details/1858917

windows:http://www.cppblog.com/tx7do/archive/2010/07/18/120743.html

易水博客:http://easwy.com/blog/archives/advanced-vim-skills-catalog/



windows下使用CSCOPE:

http://blog.csdn.net/cohowang/article/details/4393258

TxtBrowser : 纯文本浏览器(显示文本文件的目录树和语法高亮)
http://guoyoooping.blog.163.com/blog/static/1357051832009112910162389

让vimgvim支持补全cstl库:

http://www.vimer.cn/2010/01/%E8%AE%A9vimgvim%E6%94%AF%E6%8C%81%E8%A1%A5%E5%85%A8cstl%E5%BA%93.html



——遇到的问题
·在工程中搜索出错:“ 'grep' 不是内部或外部命令,也不是可运行的程序”


·多文件编辑功能失效


·ctags生成tags报错:“TagList:Failed to generate tags for ...”
原因: 路径名如果含有汉字,就会报错。
解决方法:
(1)把taglist.vim里的
let ctags_cmd = "" .s:taglist_tempfile. ""
改成
let ctags_cmd = "" .ctags_cmd. ""
(2)使用更正后的tagList
http://att.newsmth.net/att.php?p.731.55149.1226.vim




——准备软件及插件
.准备软件及插件。
(a)gvim72.exe 地址ftp://ftp.vim.org/pub/vim/pc/gvim72.exe。
(b)vimcdoc-1.7.0-setup.exe 地址http://prdownloads.sourceforge.net/vimcdoc/vimcdoc-1.7.0-setup.exe?download
(c)ec57w32.zip 地址http://prdownloads.sourceforge.net/ctags/ec57w32.zip
(d)taglist_45.zip 地址http://www.vim.org/scripts/download_script.php?src_id=7701
(e)winmanager.zip 地址http://www.vim.org/scripts/download_script.php?src_id=754
(f)minibufexpl.vim 地址http://www.vim.org/scripts/download_script.php?src_id=3640
(g)a.vim 地址http://www.vim.org/scripts/download_script.php?src_id=7218
(h)grep.vim 地址http://www.vim.org/scripts/download_script.php?src_id=7645
(i)visualmark.vim 地址http://www.vim.org/scripts/download_script.php?src_id=4700


——VIM改造为IDE
...设置高亮...
syntax enable
在当前缓冲区中使用高亮(每个被打开的文件对应一个缓冲区)
synaax on
临时关闭高亮
syntax clear
完全关闭高亮:停止对所有缓冲区的所有语法高亮
syntax off
让函数名也高亮起来,在syntax目录下c.vim和cpp.vim中添加:
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





...跳来跳去找定义:ctags
当光标在某个函数或变量上时, 按下"Ctrl+]", 光标会自动跳转到其定义处
如果此时你还想再跳回刚才的位置,可以按"Ctrl+T"
注:
当你的源文件有更新时,只能重新运行ctags -R命令,来更新tags文件。


windows下安装ctags
下载ctags57w32.zip (ctags)
解压后将ctags.exe放置到C:\windows\system32\
or
将ec57w32.zip解压,在解压后文件夹中找到ctags.exe,将其复制到C:\ProgramFiles\Vim\vim72下,并编辑_vimrc文件,添加以下内容:
set tags=tags;
set autochdir


"开始" --> "运行" --> "cmd"
C:\Documents and Settings\Administrator>cd (进入源码所在目录)
D:\soft\linux-2.6.26\linux-2.6.26>ctags -R * (生成tags文件)
将会在此目录处生成一个tags文件。

用gvim打开一个代码文件,将光标放到某一函数名上,按下"ctrl+]",光标会自动跳转到定义处。


...高效地浏览代码:TagList
分类列出前面ctags生成的tags,命令:
Tlist

将taglist_45.zip解压,解压后包含一个doc文件夹和一个plugin文件夹,将其中内容分别复制到C:\Program Files\Vim\vim72下的doc及plugin中。
在_vimrc文件中加入以下内容:
let Tlist_Show_One_File=1
let Tlist_Exit_OnlyWindow=1
用gvim打开代码文件(已生成过tags文件),:Tlist,TagList窗口即出现在左侧。


...文件浏览器和窗口浏览器
通过WinManager插件来将TagList窗口和netrw窗口整合起来

用相同的方法将winmanager.zip解压和拷贝,在_vimrc文件中加入以下内容:
let g:winManagerWindowLayout='FileExplorer|TagList'
nmap wm :WMToggle<cr>
用gvim打开代码文件,normal状态下(不是命令状态)输入命令"wm",窗口如下



...多文件编
将minibufexpl.vim复制到C:\Program Files\Vim\vim72\plugin,在_vimrc中添加:
let g:miniBufExplMapCTabSwitchBufs=1
let g:miniBufExplMapWindowsNavVim=1
let g:miniBufExplMapWindowNavArrows=1
当用gvim打开两个或两个以上的文件时,会自动弹出MiniBufExplorer窗口:
ctrl+Tab,切换到前一个buffer,并在当前窗口打开文件;
ctrl+shift+Tab,切换到后一个buffer,并在当前窗口打开文件;
ctrl+箭头键,可以切换到上下左右窗口中;
ctrl+h,j,k,l,切换到上下左右的窗口中。


...快速切换头文件/源文件
将a.vim复制到C:\Program Files\Vim\vim72\plugin,在_vimrc中添加:
nnoremap <silent> <F12> :A<CR>
用gvim打开源码文件后,按F12即可以在c/h文件中切换,也可以通过输入:A实现。


...在工程中快速查找

用gvim打开源码文件,并将光标定位到要查找的内容上,按下F3,确定要查找的内容和搜索范围,gvim会在弹出的QuickFix窗口中列出所有符合条件的搜索结果。


...高亮书签
将visualmark.vim复制到C:\Program Files\Vim\vim72\plugin。
用gvim打开源码文件,将光标定位在需要添加书签的地方,按下ctrl+F2,即添加了书签。
使用F2在书签之间正向切换,shift+F2反向切换。






Vim取消自动备份

http://hi.baidu.com/linccn/blog/item/266da8ed7b46dcdd2e2e2177.html
方法1:关闭自动备份。
编辑 _vimrc文件,在里面加入一行:
set nobackup
方法2:更改备份文件存放目录
在C:\Program Files\Vim 目录下创建文件夹“backup” (可以任意命名),即C:\Program Files\Vim\tmp,然后编辑_vimrc文件,添加一行:
set backupdir=$Vim\backup



Vim标签页
新建标签页
tabnew
tabs:显示已打开标签页的列表
关闭标签页
tabc:关闭当前标签页
tabo:关闭所有标签页
在标签页之间切换
tabp与tabn
tabfirst 移动到第一个标签页
tablast 移动到最后一个标签页
ctrl+pagedown与ctrl+pageup
可使用VIM提供的键映射功能(编辑 $HOME/.vimrc)
3、标签页排序
在标签页栏中,每一标签页都是有编号的,从 0 开始,由左至右依次递增 1。
使用 ':tabm n' 命令可以将当前标签所对应的编号调整为 'n',即将当前标签页的位置调整到编号 'n' 所对应的标签位置。
http://liyanrui.is-programmer.com/posts/1857.html
http://blog.csdn.net/alais/archive/2007/10/23/1839645.aspx



 

VIM寄存器:reg

http://blah.blogsome.com/2006/04/27/vim_tut_register/
1、数字寄存器
寄存器"0到"9就叫做数字寄存器。寄存器"0存着上一次复制操作所复制的文本。寄存器"1到"9分别保存着你最近删除的文本。数字寄存器只保留最近9条删条的文本和一条复制的文本。每删除一次这些寄存器的内容就往下传递。
而我们经常使用的p指令,就是将最近一次删除或复制的文本添加到当前位置。如果最近一次操作是复制则p就添加"0的内容,如果最近一次操作是删除就添加"1的内容。
2、字母寄存器
同一个字母的大写形式与小写形式表示的是同一个寄存器,但它们在“行为”会有所不同。
字母寄存器的名称大写时有特殊用途。当我们使用大写的寄存器进行复制或删除文本时,寄存器原来的内容会被保留,刚删除或复制的内容则附加到原来内容的后面。如:`"Cdd‘时当前删除行会添加到寄存器c原有内容的后面。大小写的寄存器仅在复制和删除时有区别。而当使用p时,大小写寄存器名的作用是一样的。
3、其他寄存器

""
无名寄存器。保存最近一次复制或删除的文本。就是p命令默认使用的寄存器。
"* "+ "~
选择与拖放的寄存器。在Windows中这几个寄存器就是剪贴板。在Linux中它们也是剪贴板——但这几个寄存器是有所区别的。
": ". "% "#
只读寄存器。它们分别用来保存最近一次在命令行窗口使用的命令、最近一次插入的文本、当前编辑的文件名、当前的替代文件名。
"/
搜索式样寄存器。保存上一次搜索所使用的式样。注意这也包括了s命令中所使用的搜索式样。

 


一般模式(normal mode)下要访问寄存器只要在使用复制和删除指令y和d时,在前面加上寄存器的名称即可。比如要将当前行及随后两行(1+2=3)复制到寄存器c中:"c3yy。要将刚保存到寄存器c的内容“粘贴”出来。
使用:reg或:display。在命令后加上寄存器名称则显示相应寄存器的内容。
一般模式下下的各种x、d、y、p命令都可以与寄存器一起使用,方法是在d、y、x、p前面加上寄存器。

 


Vim寄存器的实用价值:
1、临时的存储空间
这正是寄存器出现的目的。有时候我们需要一些临时存储空间我们就可以使用寄存器而不需要新建一个临时文件。比如写作时你也许会发现有一整段的文字也许应该删除或放到其他位置。这时你可以把它放到寄存器中。然后在需要时再把它贴出来——没错就象Windows的剪贴板。但更好用,因为你有26个字母寄存器可以使用;可以使用大写字母将文本附加到已有内容后。如果在你关闭文件之前还没想到这将这些内容贴在哪里也没关系用`:wviminfo my_viminfo‘命令。下一次编辑时输入`:rviminfo! my_viminfo‘或者在命令行用这个命令运行`gvim -i my_viminfo myfile‘,:reg看寄存器的内容是不是都还在呢。
2、像变量一样被使用
3、在编辑窗口与命令窗口之间交换内容
4、在BUFFER与程序之间交换内容
5、可以用作宏

 

 

 


Vim撤销/重做:u/ctrl+r

 

 

Vim复制/粘贴
yy复制游标所在行整行。或大写一个Y。
2yy或y2y复制两行。 ㄟ ,请举一反三好不好! :-)
y^复制至行首,或y0。不含游标所在处字元。
y$复制至行尾。含游标所在处字元。
yw复制一个word。
y2w复制两个字(单词)。
yG复制至档尾。
y1G复制至档首。
p小写p代表贴至游标后(下)。
P大写P代表贴至游标前(上)。
剪切
VIM中,删除d再粘贴p就实现剪切功能

 

Vim外部复制粘贴

VIM外部复制粘贴
如果只是使用系统粘贴板,则在输入模式下,SHIFT+INSERT
1、vim(我这是GVIM)有17个粘贴板,分别是"、 0、1、2、...、9、-、*、+、. 、 : 、/:: ;用:reg命令可以查看各个粘贴板里的内容。在vim中简单用y只是复制到“(双引号)粘贴板里,同样用p粘贴的也是这个粘贴板里的内容;
2、要将vim的内容复制到某个粘贴板,需要退出编辑模式,进入正常模式后,选择要复制的内容,然后按"Ny完成复制,其中N为粘贴板号(注意是按一下双引号然后按粘贴板号最后按y),例如要把内容复制到粘贴板a,选中内容后按"ay就可以了,有两点需要说明一下:
    (1)VIM内部("):”号粘贴板(临时粘贴板)比较特殊,直接按y就复制到这个粘贴板中了,直接按p就粘贴这个粘贴板中的内容(也可以说是VIM专用吧);
    (2)与外部程序交互(*/+):+号粘贴板是系统粘贴板,用"+y将内容复制到该粘贴板后可以使用Ctrl+V将其粘贴到其他文档(如firefox、gedit)中,同理,要把在其他地方用Ctrl+C或右键复制的内容复制到vim中,需要在正常模式下按"+p;
3、要将vim某个粘贴板里的内容粘贴进来,需要退出编辑模式,在正常模式按"Np,其中N为粘贴板号,如上所述,可以按"5p将5号粘贴板里的内容粘贴进来,也可以按"+p("+* 也行)将系统全局粘贴板里的内容粘贴进来。

注:

选择及拖拽(selection and drop)寄存器:"*, "+, "~,存取GUI选择文本,可用于与外部应用交互,使用前提为系统剪切板(clipboard)可用;
无图形界面的vi或vim下可用的寄存器只包括{a-zA-Z0-9.%#:-"},显然,这里面没有包含上面提到的"*或者"+等选择及拖拽存器。
由此可见,实现vim与外部应用相互复制、粘贴的关键在于系统剪切板对于vim是否可用。查看vim剪切板是否可用的命令为vim --version,
ubuntu 和mint默认安装的vim是不支持系统剪切、粘贴版的,需要执行以下安装:
sudo apt-get install vim-gnome

http://dpinglee.blog.163.com/blog/static/1440977532010579355724/

寄存器详解:http://blah.blogsome.com/2006/04/27/vim_tut_register/

 

 

 

VI
Vi需要耐性去学习它古怪的操作方式,然后一旦 你精通它们,你在任何UNIX系统上都获得了行动自由。EMACS赋予你疯狂的自由来自定义你认为合适的装备,然后如果你不小心,你会变成你自己配置的囚徒。
一旦你意识到Vim或Emacs的强大,你就踏上了不停发掘它们潜力的漫漫长路。你不停地改进自己的配置文件,你不停地搜索更好的插件,甚至有一天你开始动手写自己的插件。就像剑客保养自己的剑一样,你也甘心花时间提升你的Vim或Emacs。经年累月,不知不觉,你已经在那把剑上倾注了你的灵魂。
Emacs 与 vi 的分歧是左脑思维与右脑思维的分歧,Emacs 用户群代表了左脑思维群体(疯子才会去 right ctrl + x ),特征为逻辑性强,富有条理,讲究理性、善于分析,编程风格古典而严谨; vi 用户群代表了右脑思维群体(精神分裂者才会去 left shift+ ; ),随意性强,多凭直觉,讲究整体,善于综合,编程风格跳跃而赋创造性.

http://blog.sina.com.cn/s/blog_46dac66f010005kw.html
http://os.51cto.com/art/201101/242518.htm
http://www.cnbeta.com/articles/82688.htm
http://www.haijd.net/article/index.php?action=read&id=285

 

 

 

Vim基本功能

http://www.cppblog.com/loky/archive/2008/12/09/68978.aspx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值