| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1891 人关注过本帖
标题:如何在 emacs 里完成 fmt, indent 这些常见工具的工作?
只看楼主 加入收藏
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
结帖率:96%
收藏
已结贴  问题点数:20 回复次数:13 
如何在 emacs 里完成 fmt, indent 这些常见工具的工作?
详见这个帖子:
https://bbs.bccn.net/viewthread.php?tid=383354&page=2#pid2172949
搜索更多相关主题的帖子: 如何 工作 工具 
2012-10-27 11:08
madfrogme
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:21
帖 子:1160
专家分:1106
注 册:2009-6-24
收藏
得分:0 
多谢版主,搜索了一下vim

:set number

:set tw=40

:gq20<向下箭头>

就可以把从光标开始的20行合并成每行40个字符了

The quieter you become, the more you can hear
2012-10-27 12:52
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:10 
琢磨了一下 emacs要想比现成的工具做的好很难

indent的话 比其他编辑器好的一点就是默认的就相当于【智能缩进】了 不过默认的也就这个水平了 虽然可以设置 但有够麻烦的 一般是根据一段代码猜测缩进风格按照这个风格来 我也就用到这个水平了

至于后面一个 没明白咋回事 不乱说了


[ 本帖最后由 zklhp 于 2012-10-27 17:31 编辑 ]
2012-10-27 12:57
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
以下是引用madfrogme在2012-10-27 12:52:42的发言:

多谢版主,搜索了一下vim  
 
:set number
 
:set tw=40
 
:gq20<向下箭头>
 
就可以把从光标开始的20行合并成每行40个字符了

gq20j 也行吧。如果是想排版某几行的话,可以用 V 先选中,然后再 gq。比 20j 可操作性强,因为选中的时候,用 jk 可以看见选中的范围。

gq 后面可以接各种移动命令,比如 gqG 就可以从当前位置排版到文件末,从而 gggqG 是重排全文。
或者 vip 先选中一个段落,再 gq 可以重排当前段落。当然也可以用 {gq} 来实现段落重排。看个人习惯了。

文本对象的概念要深刻理解,然后在实践中多多运用加深体会。之后 vim 才会发挥神力,有人说 vi 这的设计哲学鼓励人们用神经反射进行操作(而不是用大脑思考最佳操作手法)。
2012-10-27 17:13
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
我其实已经在连接过去的那个帖子里回应你了。
听说了一个新命令后,要想到 :h gq。里面提了 textwidth 这个选项对 gq 的影响。

我在回应你的帖子里还提了批量操作文件。
其中一种方法是用 argdo 这个命令,你 :h argdo,下面还给举了一个例子。不过如果你对 vim 的参数列表还没概念,建议先看看 :h usr_07,或者去网上搜索一下资料。argdo 用好了之后,有时会发现办事效率有显著的提高。


[ 本帖最后由 pangding 于 2012-10-27 17:29 编辑 ]
2012-10-27 17:17
madfrogme
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:21
帖 子:1160
专家分:1106
注 册:2009-6-24
收藏
得分:10 
我先来看看 usr_07 ,非常感謝,

The quieter you become, the more you can hear
2012-10-27 17:45
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
以下是引用zklhp在2012-10-27 12:57:32的发言:

琢磨了一下 emacs要想比现成的工具做的好很难

indent的话 比其他编辑器好的一点就是默认的就相当于【智能缩进】了 不过默认的也就这个水平了 虽然可以设置 但有够麻烦的 一般是根据一段代码猜测缩进风格按照这个风格来 我也就用到这个水平了

至于后面一个 没明白咋回事 不乱说了

vim 我也是就用默认的,因为我要求不是很高。现成的工具都是专门做单一任务的,相对的在灵活性和功能上应该都比较出色。编辑器比不上也很正常。

vim 虽然自带了很多功能,但是如果觉得默认的行为“智能”不足,或是配置困难的话,vim 的一个好处是不强制你使用内部功能,而是可以调用你相对熟悉的外部工具。比如 fmt, indent 这样的工具的,vim 就会直接调用。具体方法是设置 formatprg 和 equalprg。一旦这两个选项不为空(默认为空),使用 gq 和 = 这两个命令的时候,vim 会自动调用外部程序处理文本,然后再用处理结果替换原来的内容(这种行为一般称作过滤)。
使用外部程序的缺点是可能会使 vim 的移植性下降,如果你在 windows 下用 vim,而又不会把相应的工具移植或配置过去,可能就比较麻烦了。


[ 本帖最后由 pangding 于 2012-10-28 06:51 编辑 ]
2012-10-28 06:49
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
z版 说的后面一个问题是指哪个?批量处理?
emacs 不是有脚本模式吗,就是假如我写好了一个处理某类文本的脚本,当然可以用 emacs 把这些脚本批量应用在一批文件上了。我都用过 emacs 的这个功能,不过用的不频,记不住,每次用之前还得查查手册。我用 vim 其实批量处理文本最多的还是转码,比如把其它编码转成 utf-8,或者把 dos 型回车转成 unix 回车。emacs 里好像是 C-x RET ... 这样的命令吧。


[ 本帖最后由 pangding 于 2012-10-28 06:58 编辑 ]
2012-10-28 06:57
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用pangding在2012-10-28 06:57:05的发言:

z版 说的后面一个问题是指哪个?批量处理?
emacs 不是有脚本模式吗,就是假如我写好了一个处理某类文本的脚本,当然可以用 emacs 把这些脚本批量应用在一批文件上了。我都用过 emacs 的这个功能,不过用的不频,记不住,每次用之前还得查查手册。我用 vim 其实批量处理文本最多的还是转码,比如把其它编码转成 utf-8,或者把 dos 型回车转成 unix 回车。emacs 里好像是 C-x RET ... 这样的命令吧。

我说的后一个是fmt命令

录脚本我都是把打开文件等操作和脚本操作录一块 一执行 唰唰的就好了 很爽啊
2012-10-28 11:57
madfrogme
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:21
帖 子:1160
专家分:1106
注 册:2009-6-24
收藏
得分:0 
虚心学习两位vim, emacs神牛

The quieter you become, the more you can hear
2012-10-28 12:13
快速回复:如何在 emacs 里完成 fmt, indent 这些常见工具的工作?
数据加载中...
 
   



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

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