【问题标题】:Move point to next tab-stop in Emacs将点移动到 Emacs 中的下一个制表位
【发布时间】:2013-11-02 11:28:59
【问题描述】:

我正在尝试在 Emacs 中创建一个主要模式。在这种模式下,tab 键应该如下工作:

  • 我定义了一个数字,例如(setq my-tab-stop 10)
  • 当我按 Tab 键时,点会移动到可被 my-tab-stop 整除的下一列,即
  • 如果 current-column 等于 0,1,2,..,9,则该点应移至第 10 列,
  • 如果current-column 等于 10,11,12,..,19,则该点应移至第 20 列,依此类推..

(注意:不要插入空格或制表符(如tab-to-tab-stop),只有点移动,但是,如果点移动超出当前行的长度,则应插入空格以使行更长)

如何做到这一点?

【问题讨论】:

    标签: emacs tabs elisp


    【解决方案1】:

    代码如下:

    (defvar tabtab-val 10)
    
    (defun tabtab/forward-char (n)
      (let ((space (- (line-end-position) (point))))
        (if (> space tabtab-val)
            (forward-char n)
          (move-end-of-line 1)
          (insert (make-string (- n space) ? )))))
    
    (defun tabtab ()
      (interactive)
      (let ((shift (mod (current-column) tabtab-val)))
        (tabtab/forward-char (- tabtab-val shift))))
    

    【讨论】:

    • 谢谢!完美运行:)
    【解决方案2】:

    只需将密钥绑定到move-to-tab-stop

    您可以轻松地为 N 列的固定间隔配置制表位列表:

    (setq tab-stop-list (number-sequence N MAX N))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-03
      • 2017-05-07
      • 1970-01-01
      • 1970-01-01
      • 2014-05-25
      • 2012-03-02
      相关资源
      最近更新 更多