| 网站首页 | 业界新闻 | 小组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 23678 人关注过本帖
标题:【年末钜献】Emacs越用越有意思 写一写最近的收获和心得
只看楼主 加入收藏
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
结帖率:100%
  问题点数:0  回复次数:19   
【年末钜献】Emacs越用越有意思 写一写最近的收获和心得
Emacs越用越有意思 写一写最近的收获和心得
;*****************************************************************************************************************
;作者:zklhp  
;Email:zklhp@
;QQ:493165744
;2012.12.27
;转载请保持完整
;*****************************************************************************************************************

感觉写东西越来越少了 一方面搬砖忙 一方面写了也没人看 正好晚上琢磨出个好东西 顺便把最近一段时间的一些收获和心得写一写罢 这个也权作今年的总结了 能使用Emacs这种强大的工具是真能提高效率啊

当然我用Emacs也是新手啦 说错勿怪

①嘻嘻 这种特殊符号怎么打方便呢

Emacs有个很好的功能 abbrev-mode 简单来说就是缩写 比如用bc代替https://www.bccn.net 如果要完成这个替换 要么直接新建这个缩写 要么直接编辑.emacs.d文件夹里面的abbrev_defs文件 这两者是等效的 比如要实现这个 文件的内容是类似这样的

(define-abbrev-table 'text-mode-abbrev-table '(
("bc" "https://www.bccn.net")
)
)

这样的话 打开abbrev-mode的情况下 打bc 空格 就会替换成网址

要实现这种符号快捷输入的功能可以定义这样的东西

("O1" "①")
("O2" "②")
("O3" "③")
("O4" "④")

这样 我直接就能打出特殊符号 当然这还不够方便 如果能按一个键替换就好了 当然有 比如容易的是C-x ' 和 C-x a e 诶 好麻烦啊 所以我把它放在M-'上了 ①② 就这么简单 而且这样不用开abbrev-mode也可以哦。。

②M-f M-b的使用能提高光标移动的效率

③两个函数方便从pdf复制内容

程序代码:
(defun make-a-long-sentence ()
  "make a long sentence"
  (interactive)
  (let (str pt)
    (delete-indentation 1)        ;一个现成函数 但要处理连字符
    (backward-char)
    (setq str (buffer-substring (setq pt (point)) (1+ pt)))
    (if (string-equal str "-")
    (delete-char 2)
      (forward-char)
      )
    )
  )

;; C-;
(global-set-key [67108923] (quote make-a-long-sentence))

(defun dwim-make-a-long-sentence ()
  "dwim make a long sentence"
  (interactive)
  (end-of-line)
  (delete-char 1)
  )
;; C-'
(global-set-key [67108903] (quote dwim-make-a-long-sentence))

;; C-M-;
(global-set-key [201326651] (quote dwim-make-a-long-sentence))



现在处理那种硬换行的内容方便多了

④修正鼠标放在链接上慢的问题

程序代码:
(defun mouse-fixup-help-message (msg)
  "Fix help message MSG for `mouse-1-click-follows-link' but speed up."
  (let (mp pos)
    (if (and mouse-1-click-follows-link
         (stringp msg)
         (string-match-p "\\`mouse-2" msg)
         (setq mp (mouse-pixel-position))
         ;; (consp (setq pos (cdr mp)))
         (setq pos (cdr mp))
         ;; (car pos) (>= (car pos) 0)
         ;; (cdr pos) (>= (cdr pos) 0)
         ;; (setq pos (posn-at-x-y (car pos) (cdr pos) (car mp)))
         (windowp (posn-window pos))
         )
    (with-current-buffer (window-buffer (posn-window pos))
      (if (mouse-on-link-p pos)
          (setq msg (concat
             (cond
              ((eq mouse-1-click-follows-link 'double) "double-")
              ((and (integerp mouse-1-click-follows-link)
                (< mouse-1-click-follows-link 0)) "Long ")
              (t ""))
             "mouse-1" (substring msg 7)))))))
  msg)


注释掉几句 快多了 在我的配置文件里面重新定义这个函数 自动覆盖Emacs里面的 反正大家都是lisp代码

⑤修正linum-mode缩放时显示异常

程序代码:
(defadvice linum-update-window (after linum-fix-scale-bugs (win) activate compile)
  "fix the bug when scale text"
  (interactive)
  (if (memq 'text-scale-mode minor-mode-list)
      (progn
    (let ((width (car (window-margins win))))
      ;; (or (boundp 'text-scale-mode-step) (defvar text-scale-mode-step))
      ;; (or (boundp 'text-scale-mode-amount) (defvar text-scale-mode-amount))
      (defvar text-scale-mode-step)
      (defvar text-scale-mode-amount)
      (setq width (ceiling (* width (expt text-scale-mode-step text-scale-mode-amount))))
      (set-window-margins win width (cdr (window-margins win)))
      )
    )
    )
  )


不解释了 反正可以。。 自己琢磨了好长时间的 网上的解决方法都没我这好 嘻嘻

⑥压榨键盘上的功能键

程序代码:
(require 'google-translate)
(define-prefix-command 'Hyper-g-map)
(global-set-key (kbd "H-g") 'Hyper-g-map)
(global-set-key (kbd "H-g g") (quote google-translate-at-point))
(global-set-key (kbd "H-g H-g") (quote google-translate-at-point))
(global-set-key (kbd "H-g r") (quote google-translate-at-point-reverse))
(global-set-key (kbd "H-g H-r") (quote google-translate-at-point-reverse))


⑦方便^{}和_{}的书写

来源于LaTex的这些表示方法太好了 可惜打起来麻烦 尤其这个还要配对

程序代码:
(defun insert-_-or-insert-_-in-region ()
  "insert _{}."
  (interactive)
  (let (pos1 pos2)
    (if (region-active-p)
    (progn
      (setq pos1 (region-beginning) pos2 (region-end))
      (goto-char pos1) (insert "_{")
      (setq pos2 (+ 2 pos2))
      (goto-char pos2) (insert "}")
      )
      (progn
    (insert "_{}")
    (backward-char 1)
    )
      )
    )
  )

;; C-=
(global-set-key [67108925] (quote insert-_-or-insert-_-in-region))

(defun insert-^-or-insert-^-in-region ()
  "insert ^{}."
  (interactive)
  (let (pos1 pos2)
    (if (region-active-p)
    (progn
      (setq pos1 (region-beginning) pos2 (region-end))
      (goto-char pos1) (insert "^{")
      (setq pos2 (+ 2 pos2))
      (goto-char pos2) (insert "}")
      )
      (progn
    (insert "^{}")
    (backward-char 1)
    )
      )
    )
  )

;; C-+
(global-set-key [67108907] (quote insert-^-or-insert-^-in-region))


顺便一提 Emacs lisp里函数名可以有这种符号诶 真好

⑧大小写转换

M-l    从当前位置把这个词变小写
M-u    从当前位置把这个词变大写
M-c    从当前位置把这个词变首字母大写

呵呵 都是从当前位置 有人说不方便 我感觉之所以这么定是从灵活性上考虑的 灵活性 这是Emacs的灵魂 而且 由于Emacs的可扩展性实现一个键变一个词太容易了

⑨whitespace-cleanup很好用啊

⑩十全十美

尽量减少手的移动来提高效率

一些需要动手才能摁的键尽量都调调 比如

TAB                C-i    这俩功能一样
<backspace>        C-h    我把它绑这里了 和bash里的保持一致
<delete>           C-d    默认的

方向键自然是不能用啦 Emacs和Vi/Vim都不大实用方向键移动光标 为啥啊 效率低啊

我在想 M-h M-j M-k M-l弄成和Vim里一样 可惜会影响其他功能 好在有模拟Vim的mode 真需要的话有比这好的多的

顺便一说 机械键盘键比较高 小拇指关节压Ctrl的技巧很好用 嘻嘻。。

就这些罢 如有不当 欢迎各位批评指正



[ 本帖最后由 zklhp 于 2012-12-28 20:33 编辑 ]
搜索更多相关主题的帖子: 东西 Email 
2012-12-28 10:26
hit小龙
Rank: 6Rank: 6
等 级:侠之大者
帖 子:173
专家分:462
注 册:2012-12-6
  得分:0 
虽然不懂
但是无理由顶起
2012-12-28 11:23
madfrogme
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:21
帖 子:1160
专家分:1106
注 册:2009-6-24
  得分:0 
最近没经常来了,过来顶了个

The quieter you become, the more you can hear
2012-12-28 17:53
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
  得分:0 
以下是引用madfrogme在2012-12-28 17:53:55的发言:

最近没经常来了,过来顶了个
多谢大牛 顺便 我最近加了个QQ群 QQ群主一直在说你水平高 不知道有没有兴趣到群里和大家交流交流啊

我说这个没啥意思 只是问问 要是不用QQ或不想加就算了。。
2012-12-28 20:18
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
  得分:0 
本帖由 静夜思 于 2012-12-28 15:21 加入精华

站长钦点的精华 站长我爱你。。
2012-12-28 20:18
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:399
帖 子:13400
专家分:51686
注 册:2012-10-18
  得分:0 
顶一个  虽然不懂

DO IT YOURSELF !
2012-12-28 20:31
madfrogme
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:21
帖 子:1160
专家分:1106
注 册:2009-6-24
  得分:0 
以下是引用zklhp在2012-12-28 21:18:03的发言:

多谢大牛 顺便 我最近加了个QQ群 QQ群主一直在说你水平高 不知道有没有兴趣到群里和大家交流交流啊

我说这个没啥意思 只是问问 要是不用QQ或不想加就算了。。

Z版表说什么大牛了,

我也就对linux刚入门, 计算机范围太广,

大家喜欢的东西也都不一样,人们也都基本只对自己的的东西感兴趣,

如果是讨论和linux,服务器,安全技术相关的我很想和大家交流,

如果是C语言,ACM之类,我真的就只有听天书的份,各种无知了。

最近对iptables psad fwsnort几个开源软件来构建防火墙,入侵检测很有兴趣,估计要弄上好一阵子了

不过也开始打算慢慢着手python,ruby ,mysql之类linux周边了。

话说Z版研二了?

[ 本帖最后由 madfrogme 于 2012-12-29 01:40 编辑 ]

The quieter you become, the more you can hear
2012-12-29 00:37
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
  得分:0 
以下是引用madfrogme在2012-12-29 00:37:46的发言:

 
Z版表说什么大牛了,
 
我也就对linux刚入门, 计算机范围太广,
 
大家喜欢的东西也都不一样,人们也都基本只对自己的的东西感兴趣,
 
如果是讨论和linux,服务器,安全技术相关的我很想和大家交流,
 
如果是C语言,ACM之类,我真的就只有听天书的份,各种无知了。
 
最近对iptables psad fwsnort几个开源软件来构建防火墙,入侵检测很有兴趣,估计要弄上好一阵子了
 
不过也开始打算慢慢着手python,ruby ,mysql之类linux周边了。
 
话说Z版研二了?

砖二?我是砖一班的。。

感谢您的回复 我把您的回复发给那个群主让群主决定邀请不邀请罢 祝您开心。。

哦 记得要有规律作息哦
2012-12-29 11:28
madfrogme
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:21
帖 子:1160
专家分:1106
注 册:2009-6-24
  得分:0 
以下是引用zklhp在2012-12-29 12:28:28的发言:


砖二?我是砖一班的。。

感谢您的回复 我把您的回复发给那个群主让群主决定邀请不邀请罢 祝您开心。。

哦 记得要有规律作息哦


我们这里在放冬假,作息就开始不太规律了。砖一啊,化学诺贝尔就看你的了,

The quieter you become, the more you can hear
2012-12-29 15:20
meiyounichen
Rank: 2
等 级:论坛游民
威 望:1
帖 子:35
专家分:29
注 册:2012-12-31
  得分:0 
回复 7楼 madfrogme
我邀请你进我群,你用不用QQ的?用的话给个号
2012-12-31 20:51
快速回复:【年末钜献】Emacs越用越有意思 写一写最近的收获和心得
数据加载中...
 
   



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

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