【问题标题】:Emacs caps lock minor mode?Emacs 大写锁定次要模式?
【发布时间】:2011-10-27 18:05:31
【问题描述】:

Emacs 中是否有一个命令可以打开可能被描述为“大写锁定次要模式”?我想做类似M-x toggle-caps-mode 的操作,然后我在缓冲区中输入的每个字母都是大写字母,直到我再次输入M-x toggle-caps-mode

注意:我不是在寻找有关如何交换上限和控制的说明。实际上,这是因为我已经这样做了。我通常对此很满意,但有时我正在编辑代码,其中有一堆全部大写的常量,按住 shift 键会很费劲。我知道各种upcase 转换函数;我宁愿不必输入单词,选择它,然后运行upcase-region

如果重要的话,我使用的是带有 Emacs 23.3.1 的 Aquamacs 2.2。

【问题讨论】:

  • 如果你交换了大写和控制,那么你在控制键上有大写锁定,不是吗?你为什么不用那个?
  • 我想我在玩“交换”这个词。我的意思是我已经重新映射了上限以进行控制。控制仍然是控制,但我实际上可以交换它们。仍然很好奇这个问题是否有一个简单的答案。

标签: emacs capslock


【解决方案1】:

您无需输入单词然后选择它。如果要大写最后一个单词,请按M-b M-uESC b u。好的,如果是word_with_underscores,则需要按几次b

如果您真的想要大写锁定次要模式,请尝试John Paul Wallington's lockcaps.el

【讨论】:

  • 我正在与一大群word_with_underscoress 合作!不过,lockcaps.el 看起来很有希望。
  • @dantswain 你只需要输入一次。然后你只需输入前几个字母并使用完成(M-TAB 语义或M-/ 动态)。
  • 自动完成从来都不是我的风格,但 lockcaps.el 只是想要我想要的。
【解决方案2】:

你可以试试这样的:

(define-minor-mode caps-lock-mode
  "caps-lock mode"
  ;;   The initial value.   
  nil   
  ;; The indicator for the mode line.   
  " CAPS-LOCK"   
  ;; The minor mode bindings.   
  '(("a" . (lambda () (interactive) (insert-char ?A 1)))
    ("b" . (lambda () (interactive) (insert-char ?B 1)))
    ;;etc 
    ("A" . (lambda () (interactive) (insert-char ?a 1)))    
    ("B" . (lambda () (interactive) (insert-char ?b 1)))    
    ;;etc
    ))

【讨论】:

  • 我发现了这个:lists.gnu.org/archive/html/gnu-emacs-sources/2004-08/… 和各种回复,最终给出了一个更紧凑的版本。我希望有一个内置的,但如果这是答案,那么这就是答案。我会给它一些时间看看有没有其他人可以提供不同的东西。
  • 谢谢,这是一个有趣的话题。特别是关于如何用单个函数替换长键映射。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多