Chinaunix

标题: 大家谈谈自己的vim使用习惯 [打印本页]

作者: noah1987    时间: 2009-01-10 12:14
标题: 大家谈谈自己的vim使用习惯
不用vim写程序的时候,""(){}[]之类的都是对称的写,然后用左移符号移进去,再写内容。

用vim以后,由于有些vim版本不支持方向键,加之用方向键效率不高,便强迫自己使用h和l键来左右移动。
现在,我写程序,先(),然后ctrl+[,进入普通模式,再h,左移,再i,进入插入模式,我感觉太折磨人了。

过去老师常讲{}""之类的对称写是好习惯,但是在vim下,如果又不用方向键,这样太折磨人。

我想,以后,不成对写""之类的东西了,这样,顺序写下去,效率会高不少。加之vim有高亮的匹配提示,不用但心忘记匹配的问题。

呵呵,想有个好习惯。。。。
不知大家怎么用?
作者: wertyu    时间: 2009-01-10 15:16
原帖由 noah1987 于 2009-1-10 12:14 发表
不用vim写程序的时候,""(){}[]之类的都是对称的写,然后用左移符号移进去,再写内容。

用vim以后,由于有些vim版本不支持方向键,加之用方向键效率不高,便强迫自己使用h和l键来左右移动。
现在,我写程序 ...



你倒是可以在你的.vimrc中添加如下内容:
:inoremap ( ()<ESC>i
:inoremap ) <c-r>=ClosePair(')')<CR>
:inoremap { {}<ESC>i
:inoremap } <c-r>=ClosePair('}')<CR>
:inoremap [ []<ESC>i
:inoremap ] <c-r>=ClosePair(']')<CR>
:inoremap < <><ESC>i
:inoremap > <c-r>=ClosePair('>')<CR>

function ClosePair(char)
        if getline('.')[col('.') - 1] == a:char
                return "\<Right>"
        else
                return a:char
        endif
endf


这样,当你键入(,[,<,{时,会在光标后面自动加上对应的),],>,},就不用移动光标了,不过这个方法也不怎么样,特别是撤销前面括号的时候
反正我是不习惯这么用的,你参考一下
作者: aquei    时间: 2009-01-10 15:34
提示: 作者被禁止或删除 内容自动屏蔽
作者: guosha    时间: 2009-01-10 15:54
参照2楼的方法,自动生成对应的括号最佳,呵呵
作者: emmoblin    时间: 2009-01-10 19:00
我就喜欢自己敲()
感觉很有节奏。

不过2楼的方法我学习了。谢谢
作者: duanjigang    时间: 2009-01-10 19:07
不怎么会VIM快捷键。。就会查找复制删除一些简单编辑命令。
感觉在vi里面敲代码太慢了。。。我都是用VC的的IDE生成代码框架,然后运行时
有错了,用vi做少许修改,gdb调试。。
作者: MMMIX    时间: 2009-01-10 19:55
原帖由 duanjigang 于 2009-1-10 19:07 发表
不怎么会VIM快捷键。。就会查找复制删除一些简单编辑命令。
感觉在vi里面敲代码太慢了。。。我都是用VC的的IDE生成代码框架,然后运行时
有错了,用vi做少许修改,gdb调试。。

Vim 也可以用代码框架,还有通过折叠显示整个源文件的结构等等。
作者: ynchnluiti    时间: 2009-01-11 14:10
我只会gd查定义
=对齐看{}是否成对
根据颜色看""是否成对

作者: changzi100    时间: 2009-01-11 14:19
自己的机器可以改造,其它的只能适应了。
作者: MMMIX    时间: 2009-01-11 16:56
原帖由 changzi100 于 2009-1-11 14:19 发表
自己的机器可以改造,其它的只能适应了。

看来你对 Unix 的使用还不够熟悉。
作者: yangsf5    时间: 2009-01-11 17:22
标题: 回复 #9 changzi100 的帖子
自己的账户
作者: duanjigang    时间: 2009-01-12 14:31
原帖由 MMMIX 于 2009-1-10 19:55 发表

Vim 也可以用代码框架,还有通过折叠显示整个源文件的结构等等。

看到同事那么玩。。可能我用VC做代码编辑习惯了。。。一直都这样,前年听说一个牛人做C++开发用记事本写代码
作者: MMMIX    时间: 2009-01-12 15:36
原帖由 duanjigang 于 2009-1-12 14:31 发表

前年听说一个牛人做C++开发用记事本写代码

这不是牛人,而是食古不化。
作者: Sorehead    时间: 2009-01-12 16:33
这点确实看不出是否是牛人,不过食古不化有点过了,个人习惯问题而已。
作者: MMMIX    时间: 2009-01-12 17:49
原帖由 Sorehead 于 2009-1-12 16:33 发表
这点确实看不出是否是牛人,不过食古不化有点过了,个人习惯问题而已。

完全手写而不借助编辑器,很难保证代码排布风格的一致,尤其是代码需要多次修改的时候(代码总是需要多次修改的)。只这一点就够了。而考虑到其他方面,好的编辑器对程序员的帮助就更多了。

有好的工具不用,非要用记事本这种对编程没有任何支持的编辑器,不是食古不化是什么?
作者: noah1987    时间: 2009-01-18 23:19
谢谢二楼的方法,我学习了~

大家接着说,您在vi下怎么写括号再写里面的内容。

写完右括号,“<-” 键回退?
作者: snce    时间: 2009-01-20 23:39
标题: 回复 #16 noah1987 的帖子
呵呵,我也被这个问题困扰过,后来看了一下《手册》里面关于键绑定的内容,
然后在.vimrc中增加如下几行:
imap <C-f> <Right>
imap <C-b> <Left>
imap <C-d> <Delete>
imap <C-t> <ESC>hxpa
imap <C-a> <ESC>^i
imap <C-e> <End>
imap <C-k> <ESC>ld<End>a

imap表示在插入模式下的键映射
<c-f>表示ctrl+f   后面是相关的命令
这样在插入模式的时候用了类似于Emacs的移动方式,就不用切换到命令模式移动光标了。
作者: ynchnluiti    时间: 2009-01-21 01:33
标题: 回复 #2 wertyu 的帖子
用了几天,不错。
作者: chinesedragon    时间: 2009-01-22 11:58
标题: 回复 #1 noah1987 的帖子
我习惯WINDOWS下的习惯
作者: snzf110    时间: 2009-04-07 16:21
()完了之后Esc再 i 就到括号里去了,我现在用其他的编辑器都想Esc了。
作者: snzf110    时间: 2009-04-07 16:22
当年老师教我们括号最好成对写,那时候不用vi,要用方向键相当的不方便。现在用vi太爽 了。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2