如何让VIM自动在运算符左右补空格?

Vim、Emacs配置和使用
回复
kobecater000
帖子: 194
注册时间: 2006-05-04 20:00

如何让VIM自动在运算符左右补空格?

#1

帖子 kobecater000 » 2007-12-14 11:48

比如输入s=a+b;,自动补成s = a + b;
头像
iblicf
帖子: 3766
注册时间: 2007-01-15 17:15

#2

帖子 iblicf » 2007-12-14 12:18

这个不好弄阿, 比如bash和 C语法不一样, bash 里边 =两边空格不空格意义不同, 还是编辑的时候控制比较好

简单的,可以这样实现 :map <F2> i<space><Esc>ea<space><Esc>

这样在 +号上按F2 两边补空格,,没什么意思哦 :)
kobecater000
帖子: 194
注册时间: 2006-05-04 20:00

#3

帖子 kobecater000 » 2007-12-14 12:22

emacs有没有这样的功能?
zhangsong023
帖子: 768
注册时间: 2006-09-20 19:56

#4

帖子 zhangsong023 » 2007-12-14 18:32

kobecater000 写了:emacs有没有这样的功能?
不同语言对空格的处理是不同的,在同一各种语言中,也有很复杂的情况要处理,比如*在C中既表指针,又表乘号,自动加空格的话会很麻烦。

无论用vim或是emacs,都可以方便的调用外部程序格式化代码,达到你想要的加空格的目的。
对于C\C++\Java,推荐astyle。

可以配置成每次保存时调用astyle格式化代码,算是一个折衷的办法,当然也可以定义键映射。
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

Re: 如何让VIM自动在运算符左右补空格?

#5

帖子 BigSnake.NET » 2007-12-14 18:36

kobecater000 写了:比如输入s=a+b;,自动补成s = a + b;
设置插入模式下运算符键的映射
不同语言的问题, 可以将映射放到autocmd判断里
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
zhangsong023
帖子: 768
注册时间: 2006-09-20 19:56

Re: 如何让VIM自动在运算符左右补空格?

#6

帖子 zhangsong023 » 2007-12-14 18:49

BigSnake.NET 写了:
设置插入模式下运算符键的映射
不同语言的问题, 可以将映射放到autocmd判断里
对C中的*不好处理,类似的,运算符如果有其它语义的都难。
上次由 zhangsong023 在 2007-12-14 18:51,总共编辑 1 次。
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

Re: 如何让VIM自动在运算符左右补空格?

#7

帖子 BigSnake.NET » 2007-12-14 18:50

zhangsong023 写了:
BigSnake.NET 写了:
设置插入模式下运算符键的映射
不同语言的问题, 可以将映射放到autocmd判断里
对C中的*不好处理。
那就没办法了, 要分析语法
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
zhangsong023
帖子: 768
注册时间: 2006-09-20 19:56

Re: 如何让VIM自动在运算符左右补空格?

#8

帖子 zhangsong023 » 2007-12-15 11:05

BigSnake.NET 写了:
那就没办法了, 要分析语法
++ -- += -= /= /* */

太多了,感觉做键映射几乎没有可行性。
kobecater000
帖子: 194
注册时间: 2006-05-04 20:00

#9

帖子 kobecater000 » 2007-12-15 12:21

应该有插件支持这种功能的吧
回复