Chinaunix首页 | 论坛 | 博客
  • 博客访问: 17616
  • 博文数量: 8
  • 博客积分: 145
  • 博客等级: 入伍新兵
  • 技术积分: 80
  • 用 户 组: 普通用户
  • 注册时间: 2011-08-27 20:11
文章分类
文章存档

2012年(6)

2011年(2)

我的朋友

分类: 嵌入式

2012-12-16 21:19:41

vim常用快捷键。

:sp filename.cpp打开某个文件。
gD 跳转到变量的定义位置。
''跳转到光标上次停靠的位置。

CTAGS使用。查找函数、变量、宏定义。
安装ctags。
在源码的最上层,执行ctags -R *
将tags添加到vim。 set tags=__path__/tags
在某个函数上面,按组合键ctrl [跳转到函数的定义位置。按ctrl 返回刚才的位置。
vim -t
:ts
:tp
:tn
更新tags,重新执行ctags -R(有问题)

Tlist的使用。浏览代码,在窗口左侧显示函数,变量,宏,与source insight类似。
光标移动到某个函数上面,按下Enter键,跳转到相应位置。
按下空格键,显示函数的使用方法。

cscope。
cscope -Rbq
:cs add __path__/cscope.out __path__ ///this may suggest a error, ignore it.
:cs find s func查找定义,与ctags类似。
:cs find c func查找函数调用,并跳转到第一个调用位置。



http://blog.csdn.net/wangxg_7520/article/details/2515262
(01) 为什么别人的方法在我这里行不通? 
(02) 如何找到上次编辑的文件? 
(03) 如何复制粘贴? 
(04) 如何在多个文件中进行替换? 
(05) 如何把fold一次全部打开? 
(06) 如何选择、复制或者查找光标所在的单词? 
(07) 如何计数搜索的字符串? 
(08) 如何去掉高亮搜索? 
(09) 如何解决linux下gvim中文菜单乱码的问题? 
(10) 如何对所编辑的文件语法高亮显示? 
(11) 如何快速插入多行数字0-99? 
(12) 如何设置中文编码? 
(13) 如何去掉或者插入^M这样的字符? 
(14) 如何整体缩进一段代码(插入tab)? 
(15) 如何合并两行? 
(16) 如何设置缩进距离(tab宽度)? 
(17) 如何让VIM不生成备份文件(~文件)? 
(18) 如何让打开文件时光标自动到上次退出该文件时的光标所在位置 
(19) 如何让一个文件在原有的gvim中用新开的tab打开 
(20) 为什么文件很多行仅仅在每行开头显示个"@" 
(21) 在插入模式下Backspace键怎么无法删除了? 
(22) 如何选中一段文字并全文搜索这段文字? 
(23) 如何为gvim设置自己喜欢的字体? 
(24) 如何发现/搜索非8位字符,如"“" 
============================================================================ 
  
(01) 为什么别人的方法在我这里行不通? 
  
估计这是最难回答的一个问题了。:-) 
不过首先应该确定你的VIM版本是否足够新,功能是否完整。使用 :version 命令查看你 
的VIM版本以及功能。一个常见的情况,如果你用的是RedHat系统,请确定安装了 
vim-enhance的rpm包,否则将是不完整的VIM。 
  
(02) 如何找到上次编辑的文件? 
  
Ctrl+O (按两次) 
  
(03) 如何复制粘贴? 
  
复制 
方法一:先ma标记当前位置为a,移动到新的位置,再y`a或者y'a复制从标记位置a到 
当前位置的内容。`和'的区别:`以字符为单位,'以行为单位。这个方法应该是所有vi 
都适用的。(如果不对请指正。) 
方法二:按v或V或Ctrl+V进入visual模式,移动光标选择一段内容,按y(若要使用系统黏贴板,按"+y)。三者的区别: 
v以字符为单位,V以行为单位,Ctrl+V是块选择。这个方法只在VIM下适用。 
  
粘贴 
p或P。区别:前者粘贴到光标后面,后者粘贴到光标前面。 
  
(04) 如何在多个文件中进行替换? 
  
一般可以用sed或者vim来做。比如要对当前目录下的*.c文件进行替换: 
方法一: 
for i in *.c; do 
   sed -i -e 's/oldvalue/newvalue/g' $i 
done 
方法二: 
vim *.c 
:argdo %s/oldvalue/newvalue/ge | update 
  
(05) 如何把fold一次全部打开? 
  
zR 或者 :set foldlevel=999 
全部关上是 zM 
  
(06) 如何选择、复制或者查找光标所在的单词? 
  
在VIM中用iw或者aw表示一个单词,两者稍有区别。 
选择光标所在的单词:viw (v进入visual模式,然后iw) 
复制光标所在的单词:yiw 
  
查找的话就是两个很常用的明令:# 和 * 
  
(07) 如何计数搜索的字符串? 
  
如果需要统计缓冲中一个模式(pattern)出现的频率。Vim 会报告已匹配的数目就是模式出现的次数。例: 
         :%s/./&/gn              characters 
         :%s/\i\+/&/gn           words 
         :%s/^//n                lines 
         :%s/the/&/gn            "the" anywhere 
         :%s/\/&/gn        "the" as a word 
  
你可能希望复位 'hlsearch' 或者使用 ":nohlsearch"。 
  
(08) 如何去掉高亮搜索? 
  
方法一::nohlsearch 
方法二:/awertgvcxz (查找一个肯定不存在的字符串) 
设置了高亮搜索(:set hlsearch)以后,可以通过 :set nohlsearch 永久地关闭高亮 
显示,也可以通过 :nohlsearch 暂时关闭高亮显示,下次搜索时将自动恢复高亮。 
  
(09) 如何解决linux下gvim中文菜单乱码问题? 
  
以vim6.3为例 
:source $VIMRUNTIME/delmenu.vim 
:source $VIMRUNTIME/menu.vim 
  
也可以将以上内容加入.vimrc 
  
光source一个menu.vim或者啥也不source都是乱码 
另外,也有网友报告说没有遇到此类问题 
  
注:这里的source指的是vim自己的source命令,和bash shell的source无关 
  
(10) 如何对所编辑的文件语法高亮显示? 
  
需要解释的是,VI有很多变种,它本身并没有这种功能,提供这种功能 
往往是其各种衍生版本,比如说vim。下面就vim中如何语法高亮简单解释一下。 
  
首先,确定一下你所用的操作系统,如果是windows,那么默认的配置文件 
就可以工作了。如果还不行,可以用鼠标从syntax菜单下选择一下适合你的 
文件类型(新版本的gvim默认把文件类型选择关闭了,需要点开,然后按照 
开头字母选择类型) 
如果是linux,那么确认一下是否是redhat。如果是redhat,那么需要安装 
vim-enhanced的rpm包。这些都做了以后,可以用:syntax on来打开语法高亮。 
必要时可以用:set filetype=...来设定你的文件类型。 
如果使用图形界面,比如gvim,那么syntax on和set filetype的操作可以 
用鼠标在菜单中选择,同windows下。 
如果是在控制台中使用vim,还应当确定你的终端设置支持颜色。 
  
(11) 如何快速插入多行数字0-99? 
  
在命令行中输入以下代码,或者先把代码保存到一个外部文件,然后source这个文件: 
let i = 0 
while i < 100 
   put = i 
   let i = i + 1 
   endw 
如果位数不足需要在前面补零,可以用Ctrl-V块选择,然后I插入0。 
若经常做的话,可以用插件VisIncr 
 
  
(12) 如何设置中文编码? 
  
在.vimrc中作如下设置,可以实现界面以及显示字体采用gb2312,遇到utf8文件时 
自动做转换: 
set encoding=prc 
set fileencoding=prc 
set fileencodings=ucs-bom,utf8,prc 
需要注意的是,按照上面的设置,如果你打开一个空的(0字节)或者是纯7bits的文件, 
这时VIM将认为是utf8编码的文件,如果你往里面输入中文,存盘的时候也将是utf8。 
因此你可能需要在存盘之前 :set fileencoding=prc 把编码改回来。 
另外,对于纯7bits的文件,由于认成了utf8,每次打开存盘的时候都要做一次转换, 
会比较慢,所以如果你很长一段时间不会接触utf8的话,可能暂时把 fileencodings 
一行注释掉比较好。 
[警告]:转换可能会造成信息丢失!如果你需要编辑的是重要的系统文件,最好把 
fileencodings 一行暂时注释掉。 
  
(13) 如何去掉或者插入^M这样的字符? 
  
在VIM的插入模式或者命令行中用输入^M这样的特殊字符,例如输入 
:%s///g 
实际显示是 
:%s/^M//g 
就可以去掉文件中所有的^M。同理,要在文件中输入^M只要按即可。 
  
这个问题往往发生在WINDOWS/DOS系统和UNIX系统之间交换文件时,因为这两类系统 
对于文本的“换行”概念解释不同。所以,还有一个解决方法就是对这类文本进行 
转换。vim内部就可以做这件事情。首先打开文本,然后 
set fileformat=unix 
再从新保存该文件覆盖原文件就可以去除:^M了 
  
(14) 如何整体缩进一段代码(插入tab)? 
  
选中一段代码,< 或 > 或 2< 或 3> …… 
  
(15) 如何合并两行? 
  
合并两行的键是 J 
另外,如果你设置了 
set backspace=2 
你就可以用backspace或者delete很方便的删到上一行或者下一行。 
  
(16) 如何设置缩进距离(tab宽度)? 
  
set tabstop=8 
set shiftwidth=8 
  
(17) 如何让VIM不生成备份文件(~文件)? 
  
set nobackup 
更多细节请看 :help backup。另外,也可以不关掉backup而是设置backupdir将备份文件统一存放到一个目录下,比如 
set backupdir=C:\Program\ Files\Vim\tmp 
  
(18) 如何让打开文件时光标自动到上次退出该文件时的光标所在位置 
  
将下面的语句放入vimrc中,就可以了 
autocmd BufReadPost * if line("'\"") && line("'\"") <= line("$") | exe "normal `\"" | endif 
若是某一次这种需要,直接运行normal命令 
`" 
  
(19) 如何让一个文件在原有的gvim中用新开的tab打开 
  
在linux下可以这样打开 
$gvim --remote-tab-silent filename 
  
而在windows下,DOS下也可以象上面那样打开;而若是“双击”打开方式,则可以修改注册表HKEY_CLASSES_ROOT\Applications\gvim.exe\shell\edit\command将其键值修改为 
  
"C:\Program Files\Vim\vim70\gvim.exe" -p --remote-tab-silent  "%1" 
  
而若是用鼠标右键中的“用 vim 编辑”,先删掉注册表中的HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\gvim,然后手工添加鼠标右键菜单,两种方式: 
a. 直接进入注册表,在HKEY_CLASSES_ROOT\*\shell下添加项“用 vim 编辑”, 
    再在项“用 vim 编辑”下添加子项“command”,在其右边窗口把其键值设定为 
    "c:\Program Files\Vim\vim70\gvim.exe" -p --remote-tab-silent "%1" 
b. 把下面的内容保存为文件gvim.reg,并将之导入注册表 
  
  Windows Registry Editor Version 5.00 
  [HKEY_CLASSES_ROOT\*\shell\Edit with &Vim] 
  [HKEY_CLASSES_ROOT\*\shell\Edit with &Vim\command] 
  @="\"c:\\Program Files\\Vim\\vim70\\gvim.exe\" -p --remote-tab-silent \"%1\"" 
  
另外,也可以添加到鼠标右键中的“发送到” 
方法:进入到目录c:\Documents and Settings\用户名\SendTo下,“鼠标右键”-“新建”-“快捷方式”,然后通过对话框的“浏览”找到gvim安转位置,这样就建立gvim的一个快捷方式,右键单击这个快捷文件-属性-快捷方式,在“目标(T)”的地址栏写入: 
"C:\Program Files\Vim\vim70\gvim.exe" -p --remote-tab-silent "%*"  
  
  注意:上面都是默认安装gvim的地址,若不是默认地址,请自行修改 
  
(20) 为什么文件很多行仅仅在每行开头显示个"@" 
  
set dy=lastline  
  
(21) 在插入模式下Backspace怎么无法删除了� 
  
set backspace=indent,eol,start 
  
(22) 如何选中一段文字并全文搜索这段文字? 
  
自己做映射,如下面的: 
:vnoremap ,/ y/=escape(@", '\\/.*$^~[]') 
:vnoremap ,? y?=escape(@", '\\/.*$^~[]') 
  
这样就可以选中文字后,按键“,/”正向搜索,按键“,?”反向搜索 
(注意:按象“,/”这样的组合键时,要稍稍按快点) 
  
(23) 如何为gvim/vim设置自己喜欢的字体? 
  
为 gvim 选择自己喜欢的字。点“编辑”-->“选择字体”, 然后在字体列表中选择一个你喜欢的字体和字号,然后确认。也可以用如下命令直接得到字体列表 
set guifont=* 
因 gvim 只能使用等宽字体, 故对话框列出的字体比你系统里安装的字体要少得多。这时可以用如下命令查询所选择的字体: 
:set guifont? 
回显结果象这样子: guifont=Nimbus Mono L 14 
若要设置某个字体为gvim启动后的默认字体,如上面例子,则在vimrc中如下设置 
set guifont=Nimbus\ Mono\ L\ 14 
( 如果字体名称中含有空格, 需要在空格前面加上一个反斜杠) 
而vim字体是由你所选择的终端所决定的,如:xterm,dos等,所以若想换console下vim的字体及字号,只能调整终端设置 
  
(24)  如何发现/搜索非8位字符,如"“"? 
  
/[^\x00-\xff]
!article/VIM/2579

阅读(358) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~