在vim里,下面的代码怎么样修改才合适?

Vim、Emacs配置和使用
头像
Patrick_DJ
帖子: 110
注册时间: 2010-08-15 8:46

在vim里,下面的代码怎么样修改才合适?

#1

帖子 Patrick_DJ » 2010-09-04 17:47

大家好,我刚开始学习使用VIM。 看了它的使用手册,其中说到hjlk和x等简单的操作说明。
另外印象里好像也不推荐使用方面键,而是用hjkl来代替,这样问题就来了。

如下几行代码:
float m_eye[3]={0,0,10};
float m_ref[3]={0,0,0};
float m_up[3]={0,1,0};

我想要改成 (也就是=和,两个符号附近加些空格。)
float m_eye[3] = {0, 0, 10};
float m_ref[3] = {0, 0, 0};
float m_up[3] = {0, 1, 0};


如果是在其它的编辑器像VisualStudio 或是 gedit, 当然就是方向键和空格键就直接完了。

另外我写代码的时候,比如在Normal模式下, 发现有一处Display 写成了 Dispaly, 是不是只能用xx先删除al,然后i切换编辑模式,再来修改呢? 不过感觉好像不太方便呀,如果代码里有好几处单词错误之类的,又要用jk等操作,导致模式来回切换什么的...

不知道有什么好的办法呢,最好可以不用切换模式?
头像
Patrick_DJ
帖子: 110
注册时间: 2010-08-15 8:46

Re: 在vim里,下面的代码怎么样修改才合适?

#2

帖子 Patrick_DJ » 2010-09-04 17:48

应该是怎么样改才更快捷些? 标题有点误导大家了,不好意思 。。 =_=
X-Bob
帖子: 96
注册时间: 2009-08-06 11:07

Re: 在vim里,下面的代码怎么样修改才合适?

#3

帖子 X-Bob » 2010-09-04 19:41

Patrick_DJ 写了:大家好,我刚开始学习使用VIM。 看了它的使用手册,其中说到hjlk和x等简单的操作说明。
另外印象里好像也不推荐使用方面键,而是用hjkl来代替,这样问题就来了。

如下几行代码:
float m_eye[3]={0,0,10};
float m_ref[3]={0,0,0};
float m_up[3]={0,1,0};

我想要改成 (也就是=和,两个符号附近加些空格。)
float m_eye[3] = {0, 0, 10};
float m_ref[3] = {0, 0, 0};
float m_up[3] = {0, 1, 0};


如果是在其它的编辑器像VisualStudio 或是 gedit, 当然就是方向键和空格键就直接完了。

另外我写代码的时候,比如在Normal模式下, 发现有一处Display 写成了 Dispaly, 是不是只能用xx先删除al,然后i切换编辑模式,再来修改呢? 不过感觉好像不太方便呀,如果代码里有好几处单词错误之类的,又要用jk等操作,导致模式来回切换什么的...

不知道有什么好的办法呢,最好可以不用切换模式?
感觉像在出考题,方法如下:
1.使用替换功能:

代码: 全选

:x,ys/=/ = /g
其中x为起始行号,y为终止行号。s表示替换。(两个斜杠间)第一个“=”表示要替换的内容,第二个“ = ”前后已经分别加个空格)表示替换后的内容。最后的“g”表示替换选项:globe,表示不询问,全行替换。

2.同上。

代码: 全选

:x,ys/,/, /g
。将“,”换成", "(后面加空格)。——刚实验过,可行。若是别的特殊字符,考虑转义,具体自己研究一下。

3.颠倒顺序的这个问题记住两个字母:“xp”(没有引号。)如例,若要将dispaly修改为display,先将光标移动到a上,连续按下xp即可。讲解:按x为删掉a,再按p为粘贴,小写粘贴在当前位置后面,大写(加shift)为粘贴在前面。记住!——xp.

PS:
替换支持正则表达式,若你正好懂,则是威力无穷。
xp操作可以扩展到为ddp,适用于上下行调序。
学习建议:官方说明里强调,不要通文阅读帮助文档,重要的是多练习,用到什么功能再去查(当然基本的操作还是一口气学会为好),这种说法是千真万确的;我的补充是,平时可以多看看“vim使用技巧”之类的帖子,当时不必学会并验证再熟练,那样不现实,——知道有这个功能就行,算是一个思路,待到具体问题时觉得这个技巧可以解决,再Google来细细研究。这样学的快,记的牢。最重要的是,学的都是你能用的到的。
华丽丽的屠龙之技再华丽,也没用。——程序员应该深恶痛绝这种事情。崇尚简洁。当然这是对代码。对注释的话,你尽可以写的华丽丽。
  
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: 在vim里,下面的代码怎么样修改才合适?

#4

帖子 lilydjwg » 2010-09-04 20:16

正则表达式威力无穷,抽时间好好学习下吧。

代码: 全选

:h pattern
也请参考其它正则教程。

另外,第一个问题可以使用indent程序(支持C语言)或者astyle程序(支持C/C++/Java/C#,但好像选项少一些)解决。

PS: 如果你经常打错某些词,可以看看Vim的缩写功能:

代码: 全选

:h abbreviations
头像
Patrick_DJ
帖子: 110
注册时间: 2010-08-15 8:46

Re: 在vim里,下面的代码怎么样修改才合适?

#5

帖子 Patrick_DJ » 2010-09-04 22:11

非常感谢4楼的回答,有种被雷到的感觉。 :D
关于正则表达式,那个还是忍了,光是调那东西就要花N多的时间...
嗯,就用xp了。当时怎么就没想到,看来要多从实践中学习才行,反省...... =_=!
头像
Patrick_DJ
帖子: 110
注册时间: 2010-08-15 8:46

Re: 在vim里,下面的代码怎么样修改才合适?

#6

帖子 Patrick_DJ » 2010-09-04 22:12

回5楼,你的方法比较高级的说,俺正在学习~~ :)
mowvita
帖子: 3
注册时间: 2010-08-28 18:00

Re: 在vim里,下面的代码怎么样修改才合适?

#7

帖子 mowvita » 2010-09-05 13:32

用一条替换命令

:x,y s/[=,]/ & /g

注意 & 前后都有一个空格。
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: 在vim里,下面的代码怎么样修改才合适?

#8

帖子 lilydjwg » 2010-09-05 14:06

mowvita 写了:用一条替换命令

:x,y s/[=,]/ & /g

注意 & 前后都有一个空格。
人家逗号前面不要空格的呀。 :em04
头像
Patrick_DJ
帖子: 110
注册时间: 2010-08-15 8:46

Re: 在vim里,下面的代码怎么样修改才合适?

#9

帖子 Patrick_DJ » 2010-09-05 14:14

试了下8楼的,该了下,也可以用。 谢谢哈~ :)
头像
Patrick_DJ
帖子: 110
注册时间: 2010-08-15 8:46

Re: 在vim里,下面的代码怎么样修改才合适?

#10

帖子 Patrick_DJ » 2010-09-05 14:14

试了下8楼的,该了下,也可以用。 谢谢哈~ :)
头像
Strange
帖子: 1824
注册时间: 2006-05-19 9:54
来自: Shanghai

Re: 在vim里,下面的代码怎么样修改才合适?

#11

帖子 Strange » 2010-09-05 17:18

这里用 "." 操作会比较方便
只要操作一次 "i <esc>",然后回到 normal 模式,在每个 "," 上按 "."

当然用 s// 也挺好,不过要是就这个情况,只有3行的话,操作应该比较快
ニンニク入れますか?
x60 with gentoo
X-Bob
帖子: 96
注册时间: 2009-08-06 11:07

Re: 在vim里,下面的代码怎么样修改才合适?

#12

帖子 X-Bob » 2010-09-05 21:39

Patrick_DJ 写了:非常感谢4楼的回答,有种被雷到的感觉。 :D
关于正则表达式,那个还是忍了,光是调那东西就要花N多的时间...
嗯,就用xp了。当时怎么就没想到,看来要多从实践中学习才行,反省...... =_=!
为什么到了呢? :em06

我也是刚学vim,用的少,若是指方法太简陋……就别回答了?
头像
Patrick_DJ
帖子: 110
注册时间: 2010-08-15 8:46

Re: 在vim里,下面的代码怎么样修改才合适?

#13

帖子 Patrick_DJ » 2010-09-15 21:30

回13楼,
倒不是说你的方法简陋,只是被你的热情感动到了。是我只前描述不准确,呵呵... :)
starwing
帖子: 100
注册时间: 2008-09-19 1:03

Re: 在vim里,下面的代码怎么样修改才合适?

#14

帖子 starwing » 2010-09-27 16:17

难道大家都不用%!astyle么???
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: 在vim里,下面的代码怎么样修改才合适?

#15

帖子 lilydjwg » 2010-09-27 18:54

starwing 写了:难道大家都不用%!astyle么???
对于 C 代码,我还是更喜欢用 indent。
回复