什么是恢复/撤消autocmd Filetype调用(Vim)的最简单方法?

时间:2015-01-06 15:35:47

标签: vim

我对Markdown文件使用以下设置:

autocmd Filetype mkd call SetMarkdownOptions()
function SetMarkdownOptions()
  highlight NonText ctermfg=white   " Match the tildes to your background
  set background=light
  call lexical#init()
  "call textobj#sentence#init()
  set foldcolumn=12                 " Add a left margin
  set guifont=Fantasque\ Sans\ Mono\ 12
  set formatoptions+=t
  highlight! link FoldColumn Normal " Make it the background colour
  set laststatus=0                  " No statusbar
  set linespace=3 
  set nonumber                      " No line numbering
  colorscheme pencil
  set showtabline=0                 " don't show the tab bar
  set textwidth=63
  map <leader>s dwwP
  noremap Q gqap
  nnoremap <leader>t :OnlineThesaurusCurrentWord<CR>
endfunction

但是如果我打开另一种文件类型,设置仍然存在。是否有一种简单的方法可以撤消/恢复autocmd Filetype调用?

2 个答案:

答案 0 :(得分:2)

特定于文件类型的选项和映射必须尽可能为 local ,以防止它们泄漏&#34;:

setlocal foldcolumn=12
nnoremap <buffer> <leader>s dwwP

请参阅:help 'option'以查看该选项是全局还是本地。

我建议将这些设置放在~/.vim/after/ftplugin/markdown.vim

答案 1 :(得分:1)

b:undo_ftplugin变量在所有标准分布式文件类型插件中设置,Vim将在切换文件类型时执行该变量,以撤消插件中的所有内容。

因此,除了使用全局 - 本地选项的“本地”版本(如果可用)之外,您还可以绑定该变量以恢复您正在修改的设置。

例如,标准降价ftplugin具有:

if exists('b:undo_ftplugin')
  let b:undo_ftplugin .= "|setl cms< com< fo< flp<"
else
  let b:undo_ftplugin = "setl cms< com< fo< flp<"
endif

你可以做类似的事情。请注意,如果变量已经存在,命令如何追加到变量,使用|将变量链接在一起。