为什么以下函数设置filetype = conf?

时间:2014-03-18 16:55:49

标签: vim

我的.vimrc中有以下功能:

autocmd Filetype mkd call SetWritingOptions()

function SetWritingOptions()
  colorscheme pencil
  setlocal background=light
  setlocal guifont=Cousine\ 11
  setlocal spell! spelllang=en_us
  setlocal noexpandtab
  setlocal textwidth=52
  setlocal linespace=4
  setlocal noruler
  setlocal nonumber
  setlocal wrap
  setlocal linebreak
  setlocal nolist
  setlocal display+=lastline
  execute "Goyo"
endfunction

(Goyo是Vim的免注册模式插件:https://github.com/junegunn/goyo.vim

我为了使用markdown个文件

而添加了这个

现在一切正常,但我最终得到filetype=conf,如果我删除execute "Goyo"

,则不会发生

这是为什么?如何修改该功能,以便最终使用filetype=mkd

(我尝试在最后添加filetype=mkd,但是Vim只是一直调用该函数直到它中断)。

1 个答案:

答案 0 :(得分:1)

Goyo命令在新窗口的新窗口中打开当前文档,该窗口由4个不可见的填充窗口围绕。窗口本地设置(setlocal)将不会应用于此新Goyo窗口。

因此,实现此目的的正确方法是使用g:goyo_callbacks,您可以使用{{3}}指定在创建新的Goyo窗口时以及关闭时调用的两个函数。

请注意,示例中的大多数设置都是全局的,无法在本地应用,因此您可能希望在第二个回调函数中还原这些设置。

function! SetWritingOptions()
  colorscheme pencil
  setlocal background=light
  setlocal guifont=Cousine\ 11
  setlocal spell! spelllang=en_us
  setlocal noexpandtab
  setlocal textwidth=52
  setlocal linespace=4
  setlocal noruler
  setlocal nonumber
  setlocal wrap
  setlocal linebreak
  setlocal nolist
  setlocal display+=lastline
endfunction

function! UnsetWritingOptions()
  " Fill in!
  " Revert global options
endfunction

let g:goyo_callbacks = [function('SetWritingOptions'), function('UnsetWritingOptions')]

augroup GoyoMarkdown
  autocmd!
  autocmd FileType mkd nested if !has('vim_starting')|execute 'Goyo'|endif
  autocmd VimEnter *.md,*.mkd,*.markdown nested Goyo
augroup END