• 请教一个 Emacs 的问题. at 2012年04月01日

    #1 楼 @jinleileiking #12 楼 @liuw #14 楼 @doitian #17 楼 @ruchee

    感谢楼上几位。NND. 最开始学习 linux 的时候,知道 ctags, etags 这些东西。只是那时候懵懵懂懂的,不太明白干嘛用的。N 久了。这么好的东西我都忘个一干二净了。现在终于把 etags 派上用场了。

    不过,我只是通过 re 实现 etags 下的 Ruby 函数定义的搜索,这我已经很满足了。

    我想问下,如果是原生支持的语言的话,例如 C, 除了搜素函数定义,还搜索哈玩意儿?

  • 请教一个 Emacs 的问题. at 2012年04月01日

    #26 楼 @doitian

    The etags program is used to create a tag table file, in a format understood by emacs(1); the ctags program is used to create a similar table in a format understood by vi(1).

    这是我的 man 帮助的内容。我没试过,不过 Emacs 要能支持 ctags, 还要 etags 干嘛?

    用 etags 生成的是以下格式:和 ctags 不一样的,.

    /root/.rvm/rubies/ruby-1.9.2-p318/lib/ruby/1.9.1/sync.rb,630 def Err.Fail(*opt)54,1007 def UnknownLocker.Fail(th)60,1156 def LockModeFailer.Fail(mode)67,1298 def Sync_m.define_aliases(cl)76,1412 def Sync_m.append_features(cl)88,1719 def Sync_m.extend_object(obj)96,1893 def sync_extend101,1962 def sync_locked?115,2264 def sync_shared?119,2310 def sync_exclusive?123,2356 def sync_try_lock(mode = EX)128,2426 def sync_lock(m = EX)136,2579 def sync_unlock(m = EX)157,3000 def sync_synchronize(mode = EX)222,4362 def sync_inspect239,4674 def sync_initialize246,4933 def initialize(*args)257,5145 def sync_try_lock_sub(m)262,5206

  • 我不用鼠标。不过我很擅长了解用户需求。 这两者没有任何关系。

  • 请教一个 Emacs 的问题. at 2012年04月01日

    #17 楼 @ruchee

    我试了下你的办法可用。

    该死的 linux. 我查了 man 帮助,etags,和 ctags,用的一个,帮助里根本没有提支持 Ruby 语言. 而且我用 etags 试了,的确不支持。 而且也根本没有提--language-force 参数。(以前那个 language 参数提示作废)

    ctags 的格式我和生成的 etags 格式不一样的。我怀疑是否能用。我还是用我那个 etags 好了。

    Ruby 标准库我生成了下。竟然 15000+ 个 defun 定义。太庞大了

  • 请教一个 Emacs 的问题. at 2012年04月01日

    #21 楼 @liuw 谢谢,知道了。事实上 ido-find-file 用的就是 find-file-at-point. 这个对于 Lisp 很好使。Ruby 就基本上废了. 我就是想找一个 Ruby 的替代品. #22 楼 @doitian 自己写要处理的问题太多了。我 Lisp 目前太差了。写起来太费劲儿。

  • 请教一个 Emacs 的问题. at 2012年04月01日

    #14 楼 @doitian ffap 是什么?是不是你指的是 ffip ? find-file-in-project. 具体怎么用呢?按那个键会抽取光标处的文件名?

  • 请教一个 Emacs 的问题. at 2012年04月01日

    #12 楼 @liuw

    谢谢回复。

    1. 我已經用正则和 etags 实现了。暂时还是够用为主吧。有空的时候观摩下 GNU Global. 听名字就很大气...
    2. 貌似也不是那么容易的事儿。Ruby 库可不是像 Lisp 似的,加个 el 扩展名就完事儿
  • 请教一个 Emacs 的问题. at 2012年04月01日

    新加了一个问题。还望有知道的朋友分享下~

  • 请教一个 Emacs 的问题. at 2012年04月01日

    #8 楼 @jinleileiking

    是的。只好通过 REGEXP 来实现了。

  • 请教一个 Emacs 的问题. at 2012年04月01日

    kao!!

    Both forms of the program understand the syntax of C, Objective C, C++, Java, Fortran, Ada, Cobol, Erlang, Forth, HTML, LaTeX, EmacsLisp/Common Lisp, Lua, Makefile, Pascal, Perl, PHP, Postscript, Python, Prolog, Scheme and most assembler-like syntaxes.

    唯独没有 Ruby.

  • 请教一个 Emacs 的问题. at 2012年04月01日

    #4 楼 @jinleileiking

    已经找到途径了。通过 etags,一个 ctags 的变种。

    不过还没解决。在研究。

  • #9 楼 @Rei

    分享一下啊~ 不妨让俺也学学,如何个fuck法儿

  • #13 楼 @jinleileiking

    Windows 下从来不脸红,而且盗版用的理直气壮。但是 linux 下,惭愧了。

  • 请教一个 Emacs 的问题. at 2012年04月01日

    #1 楼 @jinleileiking

    你就跟我说一下,如何把 Ruby 的内核和标准库的方法,创建一个 tag 呢?

  • 请教一个 Emacs 的问题. at 2012年04月01日

    #1 楼 @jinleileiking

    ctags 怎么用呢?能讲一下么?

  • #11 楼 @jinleileiking

    有破解的啊~~

  • beyondcompare

    比较代码的工具,无出其右。

  • 其实看我那么多,有大把的 alias, 可能只是进入一个最简单的目录或者打开一个最简单的文件而已。

    当然也有复杂的。alias 指向了对应的 function.

  • #3 楼 @jinleileiking

    哇。原来你用的系统这么干净,那么多基础安装包都需要自己安装。

    我用的 slack 大把基础部件都自带了。而且配合工作很完美 ( 这也是 slackware 受人赞誉的地方,因为这个版本就是一两个人在维护,理念,一致性各方面都很统一,而且绝少 bug.)

    折腾你这么一个列表,也许要花不少时间吧。呵呵。

    我看到那几个跟 fcitx 有关的安装包了,凭你用 geetoo, 我就知道你动手能力只在我之上了。

  • #42 楼 @u1331878576

    我也认为,会用 GTD 都是大神。哈

  • Emacs 按键之乾坤大挪移 at 2012年04月01日

    #30 楼 @liuw

    除了启动 daemon, 其他都是浮云。我几乎不字节编译。尤其是自己编写的 el, 否则出了错,调试窗口你只能看到一堆乱码。

    我启动大概需要七八秒吧。不过只是开机时启动一次而已。又有什么受不了的。

  • Emacs 按键之乾坤大挪移 at 2012年04月01日

    #32 楼 @yedingding

    都六七年了,前辈哦,看不懂我们说的么?

  • Emacs 按键之乾坤大挪移 at 2012年04月01日

    #29 楼 @ruchee

    那只是个笑话~~

    你不知道现在 Emacs23 支持 daemon 方式么?你要是在 Win 下,可以用 Emacs server.

    速度和飞一样。秒开。

    事实上我现在已经很习惯打开一堆 Emacs 窗口 (而不是想最初,一个窗口,通过 ido 来切换)

  • Emacs 按键之乾坤大挪移 at 2012年04月01日

    一个笑话:

    使用 vi?那该多么麻烦呀?如果你真决定这样,需要做好以下准备:

    1.获得一条任意品种的鱼,长度大于 12 英寸就行 2.冰冻一晚上 3.把它放到电脑前,运行 vi 4.抓住鱼的尾巴不停的往你头上砸,直到你决定用 EMACS。

    没过多久,vi 的拥护者们开始回击,其中一个建议把这一行加到他的步骤中去:

    在第 1 步之前键入 emacs,这样在第 4 步结束时 emacs 才可能加载完成。

  • Emacs 按键之乾坤大挪移 at 2012年04月01日

    #25 楼 @doitian

    可发挥的余地大大地~

    事实上我早就想过通过类似方式来实现,只不过一搜,已经有人搞定了。直接拿来主义了。

    #26 楼 @yedingding

    别灰心,我和你水平差不多。只不过用多了 熟了点。

  • Emacs 按键之乾坤大挪移 at 2012年04月01日

    Ctrl+Meta+i 这个快捷键默认绑定的是:单词拼写检查,和 M-$ 一样的功能。纯粹给废了。而且我几乎不用。

  • Emacs 按键之乾坤大挪移 at 2012年04月01日

    #20 楼 @hbin

    我指的是 Ctrl+Meta+i. 如果你用 Capslock 作为 Ctrl, 你不知道这个键有多舒服。我也是留着看将来有什么用处。在 linux 下,alt+tab 和 meta+tab 是两回事儿。我照样可以用 alt+tab 切换啊

  • Emacs 按键之乾坤大挪移 at 2012年04月01日

    #18 楼 @doitian 哈。兄弟很有创意呀。我都没想到。

    我的这个应该比你方便一些吧。

    我把我的也分享下:

    用到这个插件 (其实就是一个宏) http://www.emacswiki.org/cgi-bin/wiki/download/sequential-command.el

    (defun backward-upcase-word ()
      (interactive)
      (upcase-word (- (1+ (seq-count)))))
    
    (defun backward-capitalize-word ()
      (interactive)
      (capitalize-word (- (1+ (seq-count)))))
    
    (defun backward-downcase-word ()
      (interactive)
      (downcase-word (- (1+ (seq-count)))))
    
    (defun backward-mark-word ()
      (interactive)
      (mark-word (- (1+ (seq-count)))))
    
    

    我估计其他编辑器不见得有类似功能吧。呵呵。

  • Emacs 按键之乾坤大挪移 at 2012年04月01日

    #15 楼 @hbin

    事实上到现在位置,还有两个很好用的快捷键,还闲着呢。不知道该在那里用。

    一个是 Alt+Tab, (C-M-i) 还有一个 C-\

    这两个对我来说,都是很顺手的。

  • Emacs 按键之乾坤大挪移 at 2012年04月01日

    #15 楼 @hbin

    个人习惯问题吧。最初是因为,Shift 在文本终端下, 是无效的。 我刚刚跨入 linux 那会儿,还不知道怎么启动图形界面呢。那会儿已经用 Emacs 很熟了。所以,很少使用 Shift. 到目前为止,唯一用 Shift 的地方,就是查看帮助的时候,Shift+Meta+n, Shift+meta+p, 滚动另一个 buffer, 而不用把光标切换到另一个窗口。

    其他的有些命令,因为怕冲突的缘故,例如 C-l, 我直接就自动映射成 C-S-l 了。这样保证任何模式,C-l 都是移动键。(最初其实我是映射到 Super L 了。后来觉得 Super 啥的搞的挺复杂,别人也不好懂,就换成大写了.), 既然已经这样 map 了。我肯定无法再定义 Shift 相关的键了。

    事实上根本用不到 Shift 吧。C-c 前缀里面还有大把快捷键没占用呢。我又弄出来个 M-c 前缀 (基本上没用几个), 另外还有 C-v,C-f 前缀.(分别是 VC 控制和 rinari 专用).

    实在想不出来用 Shift 的地方。事实上 shift 也不方便啊。左手按着 Capslock,再按 Shift 很难受。 而右手,我手指几乎从来不离开 J,K,L. 顶过 Shift-tab 的时候用一下右边的 Shift.