我的.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只是一直调用该函数直到它中断)。
答案 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