在vim里定义快捷键来注释C程序

Vim、Emacs配置和使用
头像
i_NIX
帖子: 450
注册时间: 2008-02-11 15:46

在vim里定义快捷键来注释C程序

#1

帖子 i_NIX » 2010-03-27 15:55

我平常用C语言,喜欢用 /*...*/ 来注释程序。

转载注明:
http://hi.baidu.com/zhuhongxu/blog/item ... 3ab86.html

如果你编辑的是C程序,在gedit里可以用快捷键 Ctrl+M 实现(需要先在选项里开启),取消注释就是Ctrl+Shift+M。
而且gedit支持多行注释,只要你用鼠标选中先要注释的行,然后用快捷键搞定即可。

那如果在vim里该怎么办呢?

我们使用自定义快捷键来完成,在Normal模式下,= 和 - 这两个符号都没有什么作用,我们就可以用它们来作为注释快捷键。想想,只用一个按键就可以完成一行的注释,很爽吧!

编辑主目录下的 .vimrc 文件,加入这两句(不要直接拷贝,看下注意)

map = I/*^[A*/^[j
map - ^xx$xx

注意:上面这两句里的 ^[ 不是两个字符,而是一个字符,它代表ESC键。如何输入呢?按住Ctrl不放,然后按一下V,然后按一下ESC键即可。当然,亦可以先按Ctrl+V,松开,然后按Ctrl+ESC。
如图:


然后保存退出。
以后你编辑C程序是就可以在Normal模式下,用 = 和 - 来注释和取消注释。

这两个 map 命令都比较简单,解释一下就是:
map = I/*^[A*/^[j
定义快捷键 = ,快捷键的含义是:I 回到行首同时进入Insert模式,输入 /* 两个字符,然后用 ESC回到Normal模式, A 到达行尾并进入Insert模式,然后加入 */ 两个字符,又回到Normal模式,j 到下一行(如果你不想到下一行就可以不要这个 j )。
map - ^xx$xx
就是到达行首,x删除一个字符(两个x就是删除两个),然后 $ 到行尾,在删除两个字符。

有了这两个自定义的快捷键,以后在程序中,就可以用 = 号注释,在按 = 号就注释下一行了。可以一直按 = 号,就一直注释下去。对于注释个3、5行就是小Case了。马上取消注释可以用 u , - 号是用来取消注释其它地方的注释的。

想取消某一行的注释就在该行上按 - 号即可。如果你想取消注释后能到下一行去编辑或继续取消注释,就将上面的一二个命令改成(加个j):
map - ^xx$xxj
我想道理都明白了吧。

当然,如果你喜欢C++类型的 // 注释或其它什么类型的,就自己改命令吧,很简单哦。
总体来说呢,这两个自定义的快捷键还很粗糙,还有改进的余地。
Google Talk群组,请来<雨云>一番!
主题:UbuntuLinux编程科幻、民主、科学等。
添加 [email protected] 为好友(然后say hi,并等待验证)
参见 http://goo.gl/xIpxH

Twitter:http://twitter.com/nixzhu
头像
i_NIX
帖子: 450
注册时间: 2008-02-11 15:46

Re: 在vim里定义快捷键来注释C程序

#2

帖子 i_NIX » 2010-03-27 15:58

粘贴过来就看不到图的,原文链接
http://hi.baidu.com/zhuhongxu/blog/item ... 3ab86.html
Google Talk群组,请来<雨云>一番!
主题:UbuntuLinux编程科幻、民主、科学等。
添加 [email protected] 为好友(然后say hi,并等待验证)
参见 http://goo.gl/xIpxH

Twitter:http://twitter.com/nixzhu
头像
Strange
帖子: 1824
注册时间: 2006-05-19 9:54
来自: Shanghai

Re: 在vim里定义快捷键来注释C程序

#3

帖子 Strange » 2010-03-27 16:27

= 超级有用,整理缩进的。

注释推荐用插件 EnhancedCommentify 一类的
支持多种语言
ニンニク入れますか?
x60 with gentoo
dshbusiness
帖子: 1831
注册时间: 2009-04-03 15:10

Re: 在vim里定义快捷键来注释C程序

#4

帖子 dshbusiness » 2010-03-27 16:38

你这么做不是还得把手从主键位上拿开,移到等号那边去?
太没效率了……
我是直接绑定在fff按键上,还有njn按键上,前者用于单行注释,后者用于盒装注释……
头像
xhy
帖子: 3916
注册时间: 2005-12-28 1:16
系统: Ubuntu 12.10 X64
来自: 火星

Re: 在vim里定义快捷键来注释C程序

#5

帖子 xhy » 2010-03-27 16:45

,cc
,cs
,cm
,cu
目前负债150多万
dshbusiness
帖子: 1831
注册时间: 2009-04-03 15:10

Re: 在vim里定义快捷键来注释C程序

#6

帖子 dshbusiness » 2010-03-27 16:54

xhy 写了:,cc
,cs
,cm
,cu
你那太麻烦……我右手还得滑开主键位去按shift和冒号……对了,还得先切换回normal模式……对吧!而且退一万步……以上按键至少要两只手都参与按键至少一次才能够达到目的……我绑定的那个只需要一只手的一个或者两个指头就可以了……hia……hia……
以下是我的绑定:

代码: 全选

imap fdf <ESC>
imap fff <ESC>1$a<TAB>/*  */<ESC>hhi
imap njn <ESC>O/*<CR>
头像
xhy
帖子: 3916
注册时间: 2005-12-28 1:16
系统: Ubuntu 12.10 X64
来自: 火星

Re: 在vim里定义快捷键来注释C程序

#7

帖子 xhy » 2010-03-27 17:04

注释方便,取消注释也要方便,
,cu就能取消注释了

//xxx

/*
xxxx
xxx
*/

/*
*
*
*/

常见的注释风格,也要支持。

使用插件,可以做到同样的操作支持各种语言语法,
nerd可以注释或者取消注释,python,c,java,php,bash,js等等语言
目前负债150多万
dshbusiness
帖子: 1831
注册时间: 2009-04-03 15:10

Re: 在vim里定义快捷键来注释C程序

#8

帖子 dshbusiness » 2010-03-27 17:10

xhy 写了:注释方便,取消注释也要方便,
,cu就能取消注释了

//xxx

/*
xxxx
xxx
*/

/*
*
*
*/

常见的注释风格,也要支持。

使用插件,可以做到同样的操作支持各种语言语法,
nerd可以注释或者取消注释,python,c,java,php,bash,js等等语言
某只用c语言……一般都是写代码的时候考虑注释问题,看代码从来不注释……
另外对于vim的脚本完全不太会……说实话对一切脚本类语言深恶痛绝之……
私下有打算开发一种接近或者等同于c语言的脚本语言,最好能够通用与所有linux下软件,无奈暂无时间……亦暂无此能力……
头像
xhy
帖子: 3916
注册时间: 2005-12-28 1:16
系统: Ubuntu 12.10 X64
来自: 火星

Re: 在vim里定义快捷键来注释C程序

#9

帖子 xhy » 2010-03-27 17:13

工作中只用一种语言几乎是不现实的
目前负债150多万
头像
Strange
帖子: 1824
注册时间: 2006-05-19 9:54
来自: Shanghai

Re: 在vim里定义快捷键来注释C程序

#10

帖子 Strange » 2010-03-27 17:21

dshbusiness 写了:
xhy 写了:,cc
,cs
,cm
,cu
你那太麻烦……我右手还得滑开主键位去按shift和冒号……对了,还得先切换回normal模式……对吧!而且退一万步……以上按键至少要两只手都参与按键至少一次才能够达到目的……我绑定的那个只需要一只手的一个或者两个指头就可以了……hia……hia……
以下是我的绑定:

代码: 全选

imap fdf <ESC>
imap fff <ESC>1$a<TAB>/*  */<ESC>hhi
imap njn <ESC>O/*<CR>
insert mode 下绑定主键位是很不明智的行为

比如在insert mode下按f键,屏幕上并不会立刻出现f,而是继续等待下一个字符,知道超时,或下一个不匹配任何键绑定的键被按下。
按下键屏幕上不出来就够不舒服的了,不要说万一真的要输入 "fff' 三个字母的时候了。
ニンニク入れますか?
x60 with gentoo
dshbusiness
帖子: 1831
注册时间: 2009-04-03 15:10

Re: 在vim里定义快捷键来注释C程序

#11

帖子 dshbusiness » 2010-03-27 17:21

xhy 写了:工作中只用一种语言几乎是不现实的
那应该用几种?
学了c以后某看c++都是低效和无聊的……目前只有汇编能够引起我的兴趣…… :em06
dshbusiness
帖子: 1831
注册时间: 2009-04-03 15:10

Re: 在vim里定义快捷键来注释C程序

#12

帖子 dshbusiness » 2010-03-27 17:26

Strange 写了:
dshbusiness 写了:
xhy 写了:,cc
,cs
,cm
,cu
你那太麻烦……我右手还得滑开主键位去按shift和冒号……对了,还得先切换回normal模式……对吧!而且退一万步……以上按键至少要两只手都参与按键至少一次才能够达到目的……我绑定的那个只需要一只手的一个或者两个指头就可以了……hia……hia……
以下是我的绑定:

代码: 全选

imap fdf <ESC>
imap fff <ESC>1$a<TAB>/*  */<ESC>hhi
imap njn <ESC>O/*<CR>
insert mode 下绑定主键位是很不明智的行为

比如在insert mode下按f键,屏幕上并不会立刻出现f,而是继续等待下一个字符,知道超时,或下一个不匹配任何键绑定的键被按下。
按下键屏幕上不出来就够不舒服的了,不要说万一真的要输入 "fff' 三个字母的时候了。
这个根据个人情况而言……是很明智的……效率直线上升……
某输中文不存在这个问题,输英文遇到f我会特别不注意一下屏幕上是否有输出,因为如果下一个字母不是d或者f的话,两个字母就同时迸出来了……
另外……目前没有遇到连续三个f的情况……除了在写类似int fd之类的代码的时候会出现两个字母都是绑定了的字母……
不过随着目前写的代码的复杂度增高,fd之类的简单变量名早已不再使用,取而代之的是复杂变量名……
例如init_module_file之类的
头像
xhy
帖子: 3916
注册时间: 2005-12-28 1:16
系统: Ubuntu 12.10 X64
来自: 火星

Re: 在vim里定义快捷键来注释C程序

#13

帖子 xhy » 2010-03-27 17:37

dshbusiness 写了:
xhy 写了:工作中只用一种语言几乎是不现实的
那应该用几种?
学了c以后某看c++都是低效和无聊的……目前只有汇编能够引起我的兴趣…… :em06
至少要会3-5种,

大部分时候,效率是次要的,
比如说写个程序从www.weather.com.cn上抓天气预报下来,
用任何语言都是可以的,效率也不会相差太大,因为瓶颈在网络,
用脚本可以在10分钟内做到的事情,用C可能要1个小时,效果却差不多,
这个时候有人选择用C语言吗?

所以现在手机和嵌入式都开始用Java了,
google的android官方sdk就是java only.
目前负债150多万
dshbusiness
帖子: 1831
注册时间: 2009-04-03 15:10

Re: 在vim里定义快捷键来注释C程序

#14

帖子 dshbusiness » 2010-03-27 17:42

xhy 写了:
dshbusiness 写了:
xhy 写了:工作中只用一种语言几乎是不现实的
那应该用几种?
学了c以后某看c++都是低效和无聊的……目前只有汇编能够引起我的兴趣…… :em06
至少要会3-5种,

大部分时候,效率是次要的,
比如说写个程序从www.weather.com.cn上抓天气预报下来,
用任何语言都是可以的,效率也不会相差太大,因为瓶颈在网络,
用脚本可以在10分钟内做到的事情,用C可能要1个小时,效果却差不多,
这个时候有人选择用C语言吗?

所以现在手机和嵌入式都开始用Java了,
google的android官方sdk就是java only.
呃……但是脚本真的学起来很恶心……根学vb差不多……
头像
xhy
帖子: 3916
注册时间: 2005-12-28 1:16
系统: Ubuntu 12.10 X64
来自: 火星

Re: 在vim里定义快捷键来注释C程序

#15

帖子 xhy » 2010-03-27 17:46

dshbusiness 写了:
xhy 写了:
dshbusiness 写了:
xhy 写了:工作中只用一种语言几乎是不现实的
那应该用几种?
学了c以后某看c++都是低效和无聊的……目前只有汇编能够引起我的兴趣…… :em06
至少要会3-5种,

大部分时候,效率是次要的,
比如说写个程序从www.weather.com.cn上抓天气预报下来,
用任何语言都是可以的,效率也不会相差太大,因为瓶颈在网络,
用脚本可以在10分钟内做到的事情,用C可能要1个小时,效果却差不多,
这个时候有人选择用C语言吗?

所以现在手机和嵌入式都开始用Java了,
google的android官方sdk就是java only.
呃……但是脚本真的学起来很恶心……根学vb差不多……
主流脚本语言有10多种,旁支就更多了,不说函数式编程语言,
就python/perl/php/js跟vb也是天壤之别,完全不是一个样子。
目前负债150多万
回复