存档

‘VIM’ 分类的存档

VIM标记和跳转列表介绍

2013年2月25日 没有评论

跳转列表

当你用 “G” 命令跳到另一个地方,Vim 会记住你从什么地方跳过去的。这个位置成为一个标记,要回到原来的地方,使用如下命令:

”(两个单引号)和“(两个反引号,在键盘上和”~”共用一个键)“两个 命令可以在两个位置上跳来跳去。

使用命令”(两个单引号)和“(两个反引号,在键盘上和”~”共用一个键)可以返回到最后跳转的位置。例如,当前光标位于文件中第1234行,然后我使用”4321G“命令跳转到第4321行;这时如果我按”或“,就会跳回到1234行。

因为这两个命令也属于跳转命令,所以第4321行也被记入跳转表,如果你再次使用这两个命令,就会发现自己又跳回第4321行了。

这两个命令有一点不同,“在跳转时会精确到列,而”不会回到跳转时光标所在的那一列,而是把光标放在第一个非空白字符上。

而 CTRL-O 命令则跳到一个 “较老” 的地方 (提示: O 表示 older)。CTRL-I 则跳到一个 “较新” 的地方

:jumps 命令能输出一个你可以跳往的位置的列表。最后一个你使用的标记会用 “>” 符号标记出来。

 

标记

Vim 允许你在文本中放置自定义的标记。命令 “ma” 用 a 标记当前的光标位置。你可以在文本中使用 26 个标记 (a 到 z)。这些标记是不可见的,只是一个由 Vim 记住的位置。

`{mark}要跳到一个你定义的标记所在行对应列(可以认为是你标记对应的光标位置),可以使用命令 `{mark},这里 {mark} 是指定义标记的那个字母。所以,移到标记 a 的命令是: `a

需要注意的是,以单引号开始的语法 ‘{mark}是跳转到标记所在行的行首.

在同一行多列间进行移动时使用 `{mark}(反引号)会非常有用哦,‘{mark}(单引号)就无能为力了

删除mark的命令是:delmarks + markname

 

你可以用如下命令取得所有的标记的列表::marks

到有一些特殊的标记,包括:

‘ 跳转前的光标位置

” 最后编辑的光标位置

[ 最后修改的开始位置

] 最后修改的结束位置

注:mark仅在当前文件跳转有效,jumps可在多个文件之间来回跳转

其实标记不单在光标跳转时用到,在其他操作也可以灵活运用,比如多行复制: “ay’b命令,即可以实现复制从当前光标行到标记b所在行内容到寄存器a

阅读全文…

分类: VIM 标签: , , ,

vim区域选择之motion特性

2013年2月20日 1 条评论

区域选择语法: <action>a<object> 或 <action>i<object>

action可以是任何的命令,如 d (删除), y (拷贝), v (可以视模式选择),c(修改)。
object 可能是: w 一个单词, W 一个以空格为分隔的单词, s 一个句字, p 一个段落。也可以是一个特别的字符:”、 ‘、 )、 }、 ]、<、>。PS:HTML标签编辑是不是会很爽 🙂

假设你有一个字符串 (map (+) (“foo”)).而光标键在第一个 o 的位置。

vi" → 会选择 foo.
va" → 会选择 "foo".
vi) → 会选择 "foo".
va) → 会选择("foo").
v2i) → 会选择 map (+) ("foo")
v2a) → 会选择 (map (+) ("foo"))

分类: VIM 标签: , ,

Vim换行乱码(^M)处理

2012年8月7日 没有评论

Vim打开文件的时候有时候会出现行尾有多余的字符“^M”,出现这个符号的原因是文件中使用多种换行符混合使用造成的。

换行符(Line-Ending)主要有三种, CR, LF, CRLF.

CR(\r)是Mac采用的方式,

LF(\n)是UNIX/Linux采用的方式,

CRLF(\r\n)是DOS/Windows采用的方式.

Vim打开一个文件和写入一个文件的时候,它需要知道如何把换行符号写入到缓冲区,所以在一个buffer中一般只有一种换行符,具体是什么换行符号,取决于fileformat的设置,如果没有设置的话,它可能会根据fileformats这个设置来决定最后的fileformat。

Vim中可以通过以下命令设置换行符:

set fileformat=dos
当出现多种换行符的时候我们可以全能替换命令统一换行符
:%s/\r\(\n\)/\r/g


参考资料:
http://stackoverflow.com/questions/799417/gvim-showing-carriage-return-m-even-when-file-mode-is-explicitly-dos

http://www.fanjun.me/?p=479

分类: VIM 标签: ,

Vim攻略之NERD Tree、TagList篇

2012年5月26日 没有评论

习惯了ZendStudio这类IDE工作区左侧文件浏览器、中间编辑区、右侧文件结构列表布局的童鞋一定对VIM原生系统简单的文件管理功能很不习惯,不过神奇的VIM也有类似的解决方案,通过NERD Tree和TagList这两个插件和VIM强大的配置功能,我们也可以让神器拥有这些功能.

TagsList需要依赖Ctags生成的tags索引,此外,我们可以借助Ctags实现函数、变量引用查看定义,将鼠标移动到要查看的变量或者方法上,按Ctrl+】将会跳转到定义处,Ctrl+t、Ctrl+o返回

贴张本人配置后的效果

VIM NERDTree TagList

PS:<F3>映射打开/关闭 NERDTree、<F4>映射打开/关闭TagList 阅读全文…

分类: VIM 标签: , , ,

VIM中文乱码相关配置项说明

2012年5月19日 没有评论

Win7对系统内存的贪婪终于让我下定决心使用VIM作为工作编辑器代替了,2G内存Win7下开个Zendstudio有时候真的很要命.我那台ThinkPad上面的XP系统VIM环境配置的还算顺手,可惜丢在武汉,现人在上海没办法只能重新一点点配置了.话说VIM强大而灵活的配置功能,刚开始也是一步一步配置出来的,真的要再重新配置一遍还真有点一夜回到解放前的状态,不过还好,现在上手快多了.今天稍微整理了一下VIM中文乱码问题,后续有时间出个终极解决方案吧,就这点破事,还经常遇到,简单做个笔记. 阅读全文…

分类: VIM 标签: ,

使用VIM块操作和替换操作进行多行注释的应用

2012年2月14日 没有评论


VIM块操作

vim列块操作就是在可是模式下操作选择的行中的某一些列的操作,比如常见的我们需要在很多行都需要做一些重复的工作,比如在行头和行尾加相应的标签,或者需要删除行中间某一些特殊的列,那么块操作就是很好的帮手了。 阅读全文…

分类: VIM 标签:

VIM制表符、缩进、空格

2012年1月11日 没有评论

对于编写代码,缩进是最基本的概念之一。至于缩进是使用空格还是制表符(Tab),或者缩进是否正好使用一个制表符来表示,很多程序员,特别是 Windows开发出身的程序员,很容易混淆。幸好,Vim对于这些概念有非常完整的支持,足以应付各种复杂的情况。以下是相关的主要Vim选项:

shiftwidth(缩进的空格数);

tabstop(制表符的宽度);

expandtab(是否在缩进和遇到Tab键时使用空格替代;使用noexpandtab取消设置);

softtabstop(软制表符宽度,设置为非零数值后使用Tab键和Backspace时光标移动的格数等于该数值,但实际插入的字符仍受tabstop和expandtab控制);

autoindent(自动缩进,即每行的缩进值与上一行相等;使用noautoindent取消设置);

cindent(使用C语言的缩进方式,根据特殊字符如”{“、”}”、”:”和语句是否结束等信息自动调整缩进;在编辑C/C 等类型文件时会自动设定;使用nocindent取消设置);

cinoptions(C语言缩进的具体方式,请参考”:help cinoptions-values”);

paste(粘贴模式,会取消所有上述选项的影响来保证后面的操作–通常是从剪贴板粘贴代码–保持原有代码的风格;使用nopaste取消设置)。

下面给出一些常用的组合:

shiftwidth=4 tabstop=4:很多Windows出身的程序员会习惯这样的设置,让缩进等于制表符宽度。

shiftwidth=4 tabstop=8:很多Unix程序员的设置,仍使用较常用的4格缩进,但制表符宽度为标准的8。

set tabstop=4

set shiftwidth=4

set softtabstop=4

set expandtab

分类: VIM 标签:

VIM工作目录下讨厌的“多余“文件

2012年1月11日 没有评论

VIM编辑文件的时候默认会在同目录下面生成一些额外的文件,常见的一般有:“filefullname.swp”、“filefullname~

*.ext.swp 文件是swap文件,通常保存有”undo/redo”历史操作和一些其他的VIM内部信息

*.ext~ 文件是备份文件,其内容包含当前文件的前一个版本

配置VIM禁止生成”.ext.swp”、”.ext~”文件:

set nobackup #no backup files

set nowritebackup #only in case you don’t want a backup file while editing

set noswapfile #no swap files

修改VIM默认存放”.ext.swp”、”.ext~”文件位置:

Linux下修改vimrc文件,添加以下代码

set backupdir=~/vimtmp

set directory=~/vimtmp

阅读全文…

分类: VIM 标签:

用Gvim建立IDE编程环境 (Windows篇)

2011年11月24日 没有评论

准备软件及插件。

(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

1.安装gvim7.2。
运行gvim72.exe,选择完全安装(Full),我的安装目录是默认的C:\Program Files\Vim
安装完成后,包括了文件夹vim72和文件夹vimfiles,以及脚本_vimrc。

2.安装中文帮助手册。
运行vimcdoc-1.7.0-setup.exe,它会自动找到gvim的安装位置。
安装完毕后重新打开gvim,:help 时帮助手册已经是中文的了。
进行到这一步时,我的gvim菜单处的中文出现了乱码。
在网上寻找解决方案,将C:\Program Files\Vim\vim72下名为 lang 的文件夹删去,使菜单语言变为英语。

3.语法高亮。
首先,编辑_vimrc文件加入以下内容:
set nu!
colorscheme desert
syntax enable
syntax on
这些设置使得gvim可以显示行号,并使用了desert配色方案,而且打开了语法高亮功能(用不同颜色显示注释、关键字、字符串等)。
我们还可以让函数名也高亮起来,在C:\Program Files\Vim\vim72\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
重新打开gvim,效果如下:

4.程序中跳转。
ec57w32.zip解压,在解压后文件夹中找到ctags.exe,将其复制到C:\ProgramFiles\Vim\vim72下,并编辑_vimrc文件,添加以下内容:
set tags=tags;
set autochdir
打开cmd命令行,切换到你要查看的源代码的根目录处,运行
ctags -R
将会在此目录处生成一个tags文件。
用gvim打开一个代码文件,将光标放到某一函数名上,如下图的UpdateViewByPosNo(),按下"ctrl+]",光标会自动跳转到定义处。

按下"ctrl+T"会跳回到原来的位置。
变量、结构体、宏等等,都可以这样做。
当你的源文件有更新时,只能重新运行ctags -R命令,来更新tags文件。

5.窗口管理。
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.zip解压和拷贝,在_vimrc文件中加入以下内容:
let g:winManagerWindowLayout=’FileExplorer|TagList’
nmap wm :WMToggle<cr>
用gvim打开代码文件,normal状态下输入命令"wm",窗口如下

其中左上是netrw窗口(浏览文件),左下是TagList窗口,再次输入"wm"时这两个窗口会关闭。

6.多文件编辑。
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,切换到上下左右的窗口中。

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

8.在工程中快速查找。
grep.vim复制到C:\Program Files\Vim\vim72\plugin,在_vimrc中添加:
nnoremap <silent> <F3> :Grep<CR>
用gvim打开源码文件,并将光标定位到要查找的内容上,按下F3,确定要查找的内容和搜索范围,gvim会在弹出的QuickFix窗口中列出所有符合条件的搜索结果。如下图

确定查找内容时,支持正则表达式。

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

使用F2在书签之间正向切换,shift+F2反向切换。


说明:本文是作者在完全按照著名的《手把手教你把Vim改装成一个IDE编程环境》一文,在Windows XP上用gvim建立IDE环境时所作的备忘。
原作地址:http://blog.csdn.net/wooin/archive/2007/10/31/1858917.aspx

分类: VIM 标签:

Centos 升级安装 VIM7.3

2011年11月11日 没有评论

Centos系统自带Vim为7.0版,使用过程中发现netrw的目录浏览功能有bug,表现为:

子目录名称无法正常显示:目录名前面加添有字母’e’。

子目录无法打开:光标置于子目录上时,按回车无反映。

只好升级VIM的netrw插件,但是VIM7.1以后netrw是以Vimball形式发布。所以还得先升级VIM到最新版本了

VIM最新版本7.3 官网

默认安装

./configure
make
make install

安装过程中提示:installing /usr/local/share/man/fr/man1/vim.1 ,然后就卡着不动了。

查资料提示可能是跟locale设置有关系

我的locale 设置为

LANG=zh_CN.GBXXXX

修改为

LANG=zh_CN.UTF-8

安装成功!

分类: Linux, VIM 标签: