设置.el折叠的Vim已经杀死了语法高亮

时间:2014-07-05 08:11:50

标签: vim emacs file-type

当我在Vim中打开init.el时,我希望折叠评论。但是,我为此制作的代码破坏了语法高亮。这不是理想的结果。

以下是我在.vimrc中使用的内容:

augroup filetype_el
    autocmd!
    autocmd FileType el setlocal foldmethod=marker foldmarker=;;;,;;+
augroup END
au BufRead,BufNewFile *.el      set filetype=el

这突破了我的语法突出显示。


解决方案:

根据Ben的解释,我发现我应该使用lisp作为文件类型,而不是el。这是工作代码:

augroup filetype_lisp
    autocmd!
    autocmd FileType lisp setlocal foldmethod=marker foldmarker=;;;,;;+
augroup END

现在我有折叠语法高亮显示。


示例文件:

.el文件中,我希望以下内容在从Vim打开时具有折叠和语法高亮显示。

;;; config folding
;;;; outline & outshine

;; when a .el file is opened, use outline-minor-mode
(add-hook 'emacs-lisp-mode-hook 'outline-minor-mode)

;; gives my init.el nice folding and keybinding defaults
(when (locate-library "outshine")
  (autoload 'outshine-hook-function "outshine")
  (add-hook 'emacs-lisp-mode-hook 'outshine-hook-function))
(setq outshine-startup-folded-p t)

;;+
;;;; vimrc mode, hideshow

;; because we sometimes view our .vim and .vimrc files from emacs
(when (locate-library "vimrc-mode")
  (add-to-list 'auto-mode-alist '(".vim\\(rc\\)?$" . vimrc-mode))
  (add-to-list 'hs-special-modes-alist '(vimrc-mode "{{{" "}}}" nil nil))
  (add-hook 'vimrc-mode-hook '(lambda ()
                                (hs-minor-mode)
                                (hs-hide-all)))
  (autoload 'hs-minor-mode "hideshow" nil t)
  (eval-after-load 'hideshow
    '(define-key hs-minor-mode-map (kbd "TAB") 'hs-toggle-hiding)))

;;+
;;+

(我会考虑摆脱;;+ s,某天的方法。)

编辑:有一天来了,Vim, foldexpr, like folding in outshine.el effect on init.el - Stack Overflow。我现在可以省略;;+中的init.el

1 个答案:

答案 0 :(得分:1)

当我编辑test.el文件时,Vim将文件类型设置为" lisp"自动。

您已覆盖此设置,将文件类型设置为" el"代替。

Vim没有为" el"定义任何语法突出显示或任何插件规则。文件类型。

您需要创建一个" el"文件类型,触发" lisp"改为使用filetype,或完全避开文件类型,只触发文件名。

或者,您可以使用虚线文件类型进行尝试(例如" lisp.el")但我不确定它的效果如何。据说Vim会尝试将两种文件类型加在一起,但这并不常见。