github.com
太慢从github.com
上git
太慢时可以换成镜像,比如github.com.cnpmjs.org
. Linux下可以在bash的配置文件比如.bashrc
中建立gitclone函数
function gitclone() { git clone https://github.com.cnpmjs.org/$1; }
之后bash shell下只用
gitclone someone/somepackage
就可以使用了。不过运行
git submodule update --init --recursive
时得改git
后目录下的.gitmodules
中的所有github的网址(比如sed
或在vim里)。
注:要是能直接把对github.com
的访问重定向到github.com.cnpmjs.org
那就一劳永逸了,如果不必访问原始网站且只是clone之类的操作而不必提交的话。不过后者是个子域名,我不知道如何配置。
vim-plug
太慢vim-plug
也是用的github.com
, 所以 ~/.vim/autoload/plug.vim
(neovim下的路径是~/.local/share/nvim/site/autoload/plug.vim
,如果neovim不是直接从vim导入配置的话)中的网址也要改。搜索下,有个别几处要改(注意不是所有,看plug.vim
代码很容易明白为什么)。还有submodule的更新,也要改路径。vim里搜下.gitmodules
,在.gitmodules
可读等判断后加下面一行:
call s:system('sed -i s/github.com\\//github.com.cnpmjs.org\\// .gitmodules', spec.dir)
之后plug.vim
的代码就是执行系统调用git submodule update --init --recursive
了。
附上修改的文件与原始文件运行
diff -C 2 ~/Downloads/vim-plug/plug.vim ~/.local/share/nvim/site/autoload/plug.vim
的结果:
***************
*** 93,97 ****
set cpo&vim
! let s:plug_src = 'https://github.com/junegunn/vim-plug.git'
let s:plug_tab = get(s:, 'plug_tab', -1)
let s:plug_buf = get(s:, 'plug_buf', -1)
--- 93,97 ----
set cpo&vim
! let s:plug_src = 'https://github.com.cnpmjs.org/junegunn/vim-plug.git'
let s:plug_tab = get(s:, 'plug_tab', -1)
let s:plug_buf = get(s:, 'plug_buf', -1)
***************
*** 774,778 ****
throw printf('Invalid argument: %s (implicit `vim-scripts'' expansion is deprecated)', repo)
endif
! let fmt = get(g:, 'plug_url_format', 'https://git::@github.com/%s.git')
let uri = printf(fmt, repo)
endif
--- 774,778 ----
throw printf('Invalid argument: %s (implicit `vim-scripts'' expansion is deprecated)', repo)
endif
! let fmt = get(g:, 'plug_url_format', 'https://git::@github.com.cnpmjs.org/%s.git')
let uri = printf(fmt, repo)
endif
***************
*** 1313,1316 ****
--- 1313,1317 ----
if !v:shell_error && filereadable(spec.dir.'/.gitmodules') &&
\ (s:update.force || has_key(s:update.new, name) || s:is_updated(spec.dir))
+ call s:system('sed -i s/github.com\\//github.com.cnpmjs.org\\// .gitmodules', spec.dir)
call s:log4(name, 'Updating submodules. This may take a while.')
let out .= s:bang('git submodule update --init --recursive'.s:submodule_opt.' 2>&1', spec.dir)