Emacs列号模式编号从0开始的列通常不会让我感到悲伤,但我正在使用一些基于行/列的数据文件,其规格以“1”开头,这将是很多如果我可以让emacs做到这一点,或者找到一些elisp来更容易。
欢迎思考。
答案 0 :(得分:10)
您不能轻易地将Emacs更改为基于1的列计数,更改必须在C代码中。
但是,您可以计算自己的列并将其放在模式行中。注意:这需要使用force-mode-line-update
- 这可能会降低你的Emacs的速度(只要记住两年后Emacs在某些大缓冲区感觉迟钝的话)。
;; update the mode line to have line number and column number
(setq mode-line-position
'("%p (%l," (:eval (format "%d)" (1+ (current-column))))))
;; force the update of the mode line so the column gets updated
(add-hook 'post-command-hook 'force-mode-line-update)
文档使用链接为'Variables Used In Mode Line'和'Cursor Position Information'。
答案 1 :(得分:4)
从Emacs 26(现已发布)开始,有一个内置旋钮可以解决这个问题。
要使用它,请设置
(setq column-number-indicator-zero-based nil)
在.emacs中
[编辑反映Emacs 26现已出局。]
答案 2 :(得分:1)
嗯,这可能不是最好的答案,因为我不知道emacs那么好。我已编辑mode-line-position
,这是mode-line-format
的一部分。在使用之前,请查看原始值,以确保没有遗漏任何内容。
(setq mode-line-position
'((-3 #("%p" 0 2 (help-echo "Size indication mode
mouse-1: Display Line and Column Mode Menu" mouse-face mode-line-highlight local-map (keymap (mode-line keymap (down-mouse-1 keymap (column-number-mode menu-item "Display Column Numbers" column-number-mode :help "Toggle displaying column numbers in the mode-line" :button (:toggle . column-number-mode)) (line-number-mode menu-item "Display Line Numbers" line-number-mode :help "Toggle displaying line numbers in the mode-line" :button (:toggle . line-number-mode)) "Toggle Line and Column Number Display"))))))
(size-indication-mode (8 #(" of %I" 0 6 (help-echo "Size indication mode
mouse-1: Display Line and Column Mode Menu" mouse-face mode-line-highlight local-map (keymap (mode-line keymap (down-mouse-1 keymap (column-number-mode menu-item "Display Column Numbers" column-number-mode :help "Toggle displaying column numbers in the mode-line" :button (:toggle . column-number-mode)) (line-number-mode menu-item "Display Line Numbers" line-number-mode :help "Toggle displaying line numbers in the mode-line" :button (:toggle . line-number-mode)) "Toggle Line and Column Number Display")))))))
"(%l,[%c"
(:eval (format ",%d])" (1+ (current-column))))))
主要问题是,当您从模式行格式中删除%c
(列号)时,(:eval (current-column))
的工作速度非常慢。我不知道如何做得更好。