vim - 怎样管理 ultisnips 脚本 ?

浏览:36日期:2023-08-06

问题描述

文件 php.snippets 里的 snippet...endsnippet 块越来越多;越来越不方便管理,尤其是有些代码块很大时;观察了下 honza/vim-snippets, 发现也是一个语言一个文件;

是否有方法或偏方治理下?

问题解答

回答1:

看文档看文档看文档https://github.com/SirVer/ultisnips/blob...

Using a strategy similar to how Vim detects |ftplugins|, UltiSnipsiterates over the snippet definition directories looking for fileswith names of the following patterns: ft.snippets, ft_*.snippets, orft/, where 'ft' is the ’filetype’ of the current document and '' isa shell-like wildcard matching any string including the empty string.The following table shows some typical snippet filenames and theirassociated filetype.

snippet filename filetype ~ruby.snippets rubyperl.snippets perlc.snippets cc_my.snippets cc/a cc/b.snippets call.snippets *allall/a.snippets *all

比如你有一堆ruby的snippet, 你可以拆分这些snippet到单独的文件. 然后可以通过目录管理ruby/*[.snippets], 也可以直接用文件管理ruby_*.snippets

其实, 你是怎么管理代码的呢?

回答2:解决方案:folding(根据以下假定)

根据我的猜测,假定你的不方便管理指的是snippets块越多,文件越长,浏览起来不太容易

.vimrc设置如下

set foldcolumn=1 '设置vim左侧1个宽度用来显示folds闭合状态'set foldmethod=syntax 'folds根据语言来决定如何进行闭合'命令(normal模式下):

zR '打开所有folds'zM '关闭所有folds'zi '在以上两个命令间切换,其实是切换foldenable On/Off'folds闭合前后对比(通过以上命令)

vim - 怎样管理 ultisnips 脚本 ?

vim - 怎样管理 ultisnips 脚本 ?

操作:先通过zM命令把所有snippets块闭合(文件变得很小,每个snippets只显示一行),然后方便的进行浏览,找到你需要的snippets(将光标移至该处),然后在zR或者zi将所有snippets打开,此时,你就可以查看这个snippets的内容了;Bonus:当你按照上述操作之后,光标应该在最底下,用命令zz就可以将内容移至屏幕中部,方便查看

最后附上简单的.vimrc供参考(Plugin用Vundle进行管理):

set nocompatiblefiletype offset rtp+=~/.vim/bundle/Vundle.vimcall vundle#begin()''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Plugin goes here''''''''''''''''''''''''''''''''''''''''''''''''''''''''Plugin ’VundleVim/Vundle.vim’Plugin ’tpope/vim-sensible’Plugin ’tpope/vim-fugitive’Plugin ’tpope/vim-commentary’Plugin ’tpope/vim-repeat’Plugin ’scrooloose/syntastic’Plugin ’tpope/vim-surround’Plugin ’vim-airline/vim-airline’Plugin ’vim-airline/vim-airline-themes’Plugin ’tomasr/molokai’Plugin ’morhetz/gruvbox’Plugin ’mattn/emmet-vim’Plugin ’SirVer/ultisnips’Plugin ’honza/vim-snippets’Plugin ’ctrlpvim/ctrlp.vim’Plugin ’scrooloose/nerdtree’Plugin ’mru.vim’Plugin ’rking/ag.vim’''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Plugin stops here''''''''''''''''''''''''''''''''''''''''''''''''''''''''call vundle#end()filetype plugin indent on''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Tab Settings''''''''''''''''''''''''''''''''''''''''''''''''''''''''set tabstop=4set shiftwidth=4set expandtab''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Colorscheme Settings''''''''''''''''''''''''''''''''''''''''''''''''''''''''set background=darkif has(’gui_running’) colorscheme molokaielse colorscheme slateendif''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Text''''''''''''''''''''''''''''''''''''''''''''''''''''''''set linebreakset textwidth=500set wrap''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Other Settings''''''''''''''''''''''''''''''''''''''''''''''''''''''''set numberlet mapleader=’,’set foldcolumn=1set foldmethod=syntax''''''''''''''''''''''''''''''''''''''''''''''''''''''''' User ,ev to open .vimrc file''''''''''''''''''''''''''''''''''''''''''''''''''''''''nmap <leader>ev :tabedit $MYVIMRC<CR>''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Automatically source .vimrc file''''''''''''''''''''''''''''''''''''''''''''''''''''''''augroup source_vimrc autocmd! autocmd BufWritePost $MYVIMRC source $MYVIMRCaugroup END''''''''''''''''''''''''''''''''''''''''''''''''''''''''' CtrlP''''''''''''''''''''''''''''''''''''''''''''''''''''''''let g:ctrlp_user_command = ’ag %s -i --nocolor --nogroup --hidden --ignore .git --ignore .svn --ignore .hg --ignore .DS_Store --ignore '**/*.pyc' -g ''’let g:ctrlp_working_path_mode=0let g:ctrlp_match_window=’results=100’''''''''''''''''''''''''''''''' JavaScript section'''''''''''''''''''''''''''''''au FileType javascript call JavaScriptFold()au FileType javascript setl fenau FileType javascript setl nocindentau FileType javascript imap <c-t> $log();<esc>hiau FileType javascript imap <c-a> alert();<esc>hiau FileType javascript inoremap <buffer> $r return au FileType javascript inoremap <buffer> $f //--- PH ----------------------------------------------<esc>FP2xifunction! JavaScriptFold() setl foldmethod=syntax setl foldlevelstart=1 syn region foldBraces start=/{/ end=/}/ transparent fold keepend extend function! FoldText()return substitute(getline(v:foldstart), ’{.*’, ’{...}’, ’’) endfunction setl foldtext=FoldText()endfunction

相关文章: