| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 636 人关注过本帖
标题:如何用 vim 生成 zklhp 展示的代码。
取消只看楼主 加入收藏
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
结帖率:96%
收藏
已结贴  问题点数:100 回复次数:2 
如何用 vim 生成 zklhp 展示的代码。
有关 z版 的 emacs 神技,见此帖:https://bbs.bccn.net/thread-380517-1-1.html

vim 想来也可以完成同样的工作。我提供两种不同风格的方法。

一:
比较容易操作的是用宏记录:
在 bash 里 $vim 回车,进入 vim 之后,按
ia[1] = 0;<esc>
将 a[1] = 0; 这个语句插入缓冲区。并用 <esc> 键退出插入模式。(注意:蓝色字符请统一理解,不要看成 小于号,字母e... 这样的东西。)
之后
qaYp<ctrl-a>q
qa 开始记录键盘宏至寄存器 a,Y 复制整行,p 粘贴至下一行,<ctrl-a>自增离光标最近的数字,q 停止键盘记录。
再之后
997@a
现在已经有两行内容了,以寄存器 a 为内容,执行 997 次宏。以得到一共 999 行。

这就是第一种方法,全部在 insert mode 和 normal mode 下完成。是容易操作、也最方便平时使用的方法。
这个方法的最后一步有点慢,也许要花上零点几秒,并看到屏幕高速向上滚动。因为执行宏的过程 vim 会同步刷屏以更新缓冲区内容。


二:
另一种方法是用冒号命令。也就是 vim 的复杂操作技巧。
冒号命令里有 for 指令。所以这种方法其实就是在编程。只不过用的是 vim 的内置语言。不知道在 z版 眼中算不算作弊。
不过 vim 的内置语言和 emacs lisp 不同,除了写脚本以外,一般也经常在编译的时候动态使用。有点类似 emacs 里的 <A-x> 指令。
具体方法是,进入 vim 之后,直接按冒号
:for i in range(1, 999)
call setline(i, "a[".string(i)."] =0;")
endfor
回车就行了。这个执行过程中不刷屏。如果是 9999 的话,明显优于第一种方法。前者得耗个一两秒,后者还是瞬间。


另外希望 z版 结帖之后也能告诉告诉大家,emacs 里是怎么做到的。至少我不会。


[ 本帖最后由 pangding 于 2012-9-3 01:37 编辑 ]
搜索更多相关主题的帖子: 如何 color 寄存器 记录 
2012-09-03 01:34
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
另外我录完屏也不会转 gif。反正 vim 是按键流。一般不需要看屏幕,只需要看指法。
2012-09-03 01:35
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
以下是引用zklhp在2012-9-3 08:01:55的发言:

为了实现这个还编程 太复杂啊

其实一般在 vim 里用冒号命令,使用者一般不会感觉自己是在编程。vim 内置的语言一般不认为是一种编程语言,因为它不够强大。这和 emacs 的 elisp 不能比。
但一般都认为 vi 对文本的处理能力比 emacs 强,所以才被认为是编辑器之神。emacs 主要是有点像操作系统了,能干好多根本不是编辑器的份内事。在这些方面,vi 不如 emacs。
2012-09-03 21:30
快速回复:如何用 vim 生成 zklhp 展示的代码。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027886 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved