VIM写C的时候怎么设置才能有EMACS的这种效果?

Vim、Emacs配置和使用
回复
氢离子
帖子: 113
注册时间: 2007-09-26 9:00

VIM写C的时候怎么设置才能有EMACS的这种效果?

#1

帖子 氢离子 » 2007-10-31 0:50

VIM中的自动缩进,虽然可以,但自从用了EMACS后……

假设我写了以下的程序:
#include<stdio.h>
int main()
{
printf("hello,world");
printf("world,hello");
}

当然,如果默认一行一行输入,VIM(开启了set cindent)和EMACS都会在printf前面插上制表符(或空格组成的空白)
假设你每一行都没缩进或不整齐的话(一行多一行少,例如上一个printf前面两个制表符而下一个前面四个制表符,再最后一个花括号前面一个制表符)……
如果是EMACS,只要把光标移到当前行,按一下TAB,马上自动调整好,(两个printf前面只一个制表符,而后一个花括号前面取消,即没有)……
如果是VIM……怎么才能有这种效果?


同理(即),如果没事按按tab的话,VIM会努力在当前位置插入制表符,而EMACS却是将当前行的缩进调整(相当于不会插入制表符,仅调整前边的缩进)。


当然,说的是文件名以C后缀的情况下,可能EMACS是以这个为语法基准的。


本人懒人一个,特喜欢EMACS的这种功能,很希望VIM能找出什么命令或设置使之也能这样做……
氢离子
帖子: 113
注册时间: 2007-09-26 9:00

#2

帖子 氢离子 » 2007-10-31 1:17

找到答案了,原来在VIM下是=,尤其是gg=G自动调整全篇缩进很强大。但是,如何禁用插入制表符呢?(即TAB键只有调整当前行缩进的作用)


反正两者都不熟,暂时因为这个功能转投EMACS……
zhangsong023
帖子: 768
注册时间: 2006-09-20 19:56

#3

帖子 zhangsong023 » 2007-10-31 8:50

氢离子 写了:找到答案了,原来在VIM下是=,尤其是gg=G自动调整全篇缩进很强大。但是,如何禁用插入制表符呢?(即TAB键只有调整当前行缩进的作用)


反正两者都不熟,暂时因为这个功能转投EMACS……
呵呵做个广告,gg=G在Emacs中这样子:C-x h C-M-\,前提是没有修改默认的键绑定。
herberteuler
帖子: 45
注册时间: 2007-01-27 14:11

#4

帖子 herberteuler » 2007-10-31 16:21

Emacs 中其实不用按 TAB,因为当你输入 ; 或 , 时候会自动缩进;甚至连 RET 也不用按,如果你用了 auto newline mode 的话。事实上,由于 CC Mode 使用了一个下推自动机,Emacs 已经可以对代码本身做一些简单的分析了。
回复