set autoindent,把当前行的对起格式应用到下一行;
set smartindent,智能的选择对起方式;
set tabstop=4,设置tab键为4个空格;
set shiftwidth=4,将换行自动缩进设置成4个空格;
PS:
自动缩进有两个选项:
代码:
set autoindent
set cindent
autoindent 就是自动缩进的意思,当你在输入状态用回车键插入一个新行,或者在 normal 状态用 o 或者 O 插入一个新行时,autoindent 会自动地将当前行的缩进拷贝到新行,也就是"自动对齐”,当然了,如果你在新行没有输入任何字符,那么这个缩进将自动删除。
cindent 就不同了,它会按照 C 语言的语法,自动地调整缩进的长度,比如,当你输入了半条语句然后回车时,缩进会自动增加一个 TABSTOP 值,当你键入了一个右花括号时,会自动减少一个 TABSTOP 值。
第二篇文章
相信大部分在linux下使用Vi的朋友和我一样,主要都是用vi来编辑程序源代码。而事实上Vi也提供了针对这方面的重要功能,主要包括有:缩进控制、符号匹配(如'{'和'}' )以及使用ctags。
1、缩进控制
(1)使用自动缩进功能
:set autoindent 或 :set ai
(2)当已经使用了自动缩进功能后,在插入模式下(注意不是命令模式下)
Ctrl+t 对行实现另一级别的缩进
Ctrl+d 取消一个级别的缩进
(3)在命令模式下
> 将行向右移动8个空格
n> 将连续n行向左或向右缩进8个空格
如当程序代码中有连续5行没有缩进,要进行缩进更正,使用5>>就可以实现这5行均缩进。
2、特殊的搜索匹配命令
针对开括号字符(、[、{和
(1)当光标位于上述字符中的任何一个时,命令模式下按下%,光标将移动到与之匹配的开括号或闭括号处,若没有移动到相应的符号处,则肯定是程序中有输入有错误。
(2)另一发现匹配括号的设置选项如下
:set showmatch 或 :set sm
设置好后,当我们输入)或}时,光标在返回当前位置之前将短暂地移回到相匹配的(或{处,若不存在相匹配的括号字符,终端则会发出嘟嘟的声音。
3、使用ctags标志
Windows下有source insight工具阅读程序代码功能十分强大,使用也相当方便,尤其是针对像阅读多文件源程序时如linux内核源码等;但在linux下呢,在网上听说过有source navigator这一工具和Vi+Ctags,不过前者配置似乎比较麻烦,自己更不曾使用过,而后者也是最近开始使用,发现这类轻量级武还是甚为好用的,让人不得不折服于unix所推崇的利用多个实用工具软件组合完成任务的哲学,vi+ ctags便是很好的证明。
在vi内部使用
:!ctags file.c 该命令将在当前目录下创建一个tags名称文件,文件中包括了file.c文件中定义的函数信息。
:!ctags *.c 创建当前目录下所有C源文件的tags文件
:tag name 可以定位到name函数定义处
当然,要熟悉使用vi+ctags,还远不止以上用法,关键还在于多用,呵呵 :p
4、编写Vim配置文件.vimrc
上述提到的各种Vi设置命令在我们每次进入vi后必须重新设置才能生效,如果希望每次进入vi后自动进行设置而不用显式命令设置,就需编写vi配置文件。
vi --version // 可以查看其配置文件所在目录,通常在主目录下如/home/username/.vimrc
如果主目录下不存在该文件,则在主目录下创建.vimrc文件,在其中添加相设置的命令,针对C源程序一般其内容可以设置如下:(呵呵,强烈推荐使用vim配置文件 :p)
:set cindent
:set shiftwidth=4
:set ts=4
补充一点关于vim的查找替换功能总结
1,简单替换表达式
- 搜索并替换。输入:[range]s/from/to/[flags]命令可以搜索匹配的字符串并且替换为指定的
字符串。这是一个稍微复杂的命令。其中[range]是一个可选项,用来指定搜索替换的范围。[flags]也是一个可选项,用来指定搜索替换的处理方
式。所以这个命令的简单形式是:s/from/to/。
- 搜索替换的范围。如果没有指定范围,则只在当前行进行搜索替换。
- 在所有行进行搜索替换。范围符号%表示在所有行进行搜索替换。:%s/from/to/就是在全文查找from并替换为to。
- 在指定的行上进行搜索替换。:1,50s/from/to/表示在第1行和第50行之间(包括1和50行)进行搜索和替换。:45s/from/to/表示仅仅在第45行进行搜索和替换。而"1,$"行号范围和“%“是等价的。
替换命令可以在全文中用一个单词替换另一个单词:
:%s/four/4/g
“%” 范围前缀表示在所有行中执行替换。最后的 “g” 标记表示替换行中的所有匹配点。如果仅仅对当前行进行操作,那么只要去掉%即可
如果你有一个象 “thirtyfour” 这样的单词,上面的命令会出错。这种情况下,这个单词会被替换成”thirty4″。要解决这个问题,用 “<” 来指定匹配单词开头:
:%s/<four/4/g
显然,这样在处理 “fourty” 的时候还是会出错。用 “>” 来解决这个问题(全词匹配):
update 2013.8.13
上传两张图:
今天不知道按到哪个按键,写的代码全是被选中状态,很影响阅读。查看一些资料之后,随便vi一个文件,使用 :nohlsearch 搞定。 真是无奈