仅当在特定repo中工作时,才在vim中加载函数/映射等

仅当在特定repo中工作时,才在vim中加载函数/映射等,vim,vim-plugin,Vim,Vim Plugin,我想知道,当我在某个repo中工作时,是否有可能将vim设置为加载其他函数/映射等 与具有文件类型的ftplugin类似,但类型不是由文件本身定义的,而是由其位置定义的(或由命令的结果,例如hg path default)。这可能适合您的需要,但这只是一个示例 augroup repo autocmd! autocmd BufReadPost * call RepoMappings() augroup END function! RepoMappings() let r

我想知道,当我在某个repo中工作时,是否有可能将vim设置为加载其他函数/映射等


与具有文件类型的ftplugin类似,但类型不是由文件本身定义的,而是由其位置定义的(或由命令的结果,例如hg path default)。

这可能适合您的需要,但这只是一个示例

augroup repo
    autocmd!
    autocmd BufReadPost * call RepoMappings()
augroup END

function! RepoMappings()
    let repo = '^/tmp/test/'
    if expand('%:p') =~# repo
        nnoremap <buffer> <f7> :echo 'yohoo'<cr>
    endif
endfunction
augrouprepo
自动驾驶!
autocmd BufReadPost*调用repoappings()
螺旋端
功能!RepoMappings()
让repo='^/tmp/test/'
如果展开('%:p')=~#回购
nnoremap:echo'yohoo'
恩迪夫
端功能
您可以更改
let repo='^/tmp/test/'
,这将是您的repo路径的
前缀。在上面的示例中,
映射仅适用于“repo”中的文件

您可以将
repo
变量扩展到列表中,或者为不同的repo调用不同的函数

有一件事没有处理,如果您打开一个没有文件名的新缓冲区,您可能需要检查
pwd
以查看它是否在“repo”中。但是你有了这个想法,你可以。如果需要的话,你可以自己做


试一试。

这可能适合您的需要,但这只是一个例子

augroup repo
    autocmd!
    autocmd BufReadPost * call RepoMappings()
augroup END

function! RepoMappings()
    let repo = '^/tmp/test/'
    if expand('%:p') =~# repo
        nnoremap <buffer> <f7> :echo 'yohoo'<cr>
    endif
endfunction
augrouprepo
自动驾驶!
autocmd BufReadPost*调用repoappings()
螺旋端
功能!RepoMappings()
让repo='^/tmp/test/'
如果展开('%:p')=~#回购
nnoremap:echo'yohoo'
恩迪夫
端功能
您可以更改
let repo='^/tmp/test/'
,这将是您的repo路径的
前缀。在上面的示例中,
映射仅适用于“repo”中的文件

您可以将
repo
变量扩展到列表中,或者为不同的repo调用不同的函数

有一件事没有处理,如果您打开一个没有文件名的新缓冲区,您可能需要检查
pwd
以查看它是否在“repo”中。但是你有了这个想法,你可以。如果需要的话,你可以自己做

试试看。

中央配置 如果可以集中配置特定命令/本地异常,则可以将此类AutoCMD放入
~/.vimrc

:autocmd BufRead,BufNewFile /path/to/dir/* setlocal ts=4 sw=4
使用
:setlocal
而不是
:set
,以及同样的
:map…
:命令非常重要-缓冲区…

另一方面,如果希望将特定配置与项目一起存储(并且不希望通过Modeline将其嵌入所有文件),则有以下两个选项:

具有内置功能的本地配置 如果总是从项目根目录启动Vim,则内置

:set exrc
启用从当前目录读取
.vimrc
文件。您可以在其中放置
:set ts=4 sw=4
命令

通过插件进行本地配置 否则,您需要插件的帮助;在vim.org上有几个;我可以推荐,它甚至允许特定于本地文件类型的配置

请注意,从文件系统读取配置有安全隐患;您可能需要
:设置安全

中央配置 如果可以集中配置特定命令/本地异常,则可以将此类AutoCMD放入
~/.vimrc

:autocmd BufRead,BufNewFile /path/to/dir/* setlocal ts=4 sw=4
使用
:setlocal
而不是
:set
,以及同样的
:map…
:命令非常重要-缓冲区…

另一方面,如果希望将特定配置与项目一起存储(并且不希望通过Modeline将其嵌入所有文件),则有以下两个选项:

具有内置功能的本地配置 如果总是从项目根目录启动Vim,则内置

:set exrc
启用从当前目录读取
.vimrc
文件。您可以在其中放置
:set ts=4 sw=4
命令

通过插件进行本地配置 否则,您需要插件的帮助;在vim.org上有几个;我可以推荐,它甚至允许特定于本地文件类型的配置


请注意,从文件系统读取配置有安全隐患;您可能想
:设置安全

注意:有一个专用的.Oops,我不知道。谢谢你说的回购协议是什么意思?你怎么决定?走小路?或者什么?正如我在文章中提到的,是的路径对我有效,而且命令的结果对我也有效(例如hg path default)。注意:有一个专用的.Oops,我不知道。谢谢你说的回购协议是什么意思?你怎么决定?走小路?或者什么?正如我在文章中提到的,yespath对我有效,命令的结果也对我有效(例如hgpath default)。