gpt4 book ai didi

linux - 使用 NeoBundle 时跨 mac 和 Ubuntu 服务器同步 vim 设置

转载 作者:太空狗 更新时间:2023-10-29 12:31:07 28 4
gpt4 key购买 nike

我想在我的 Mac 和远程 Linux Ubuntu 服务器之间同步 vim 设置。我正在使用 NeoBundle 进行包管理。我做了以下事情:

  1. 在 Mac 上,我安装了 NeoBundle 并在 ~/.vim/ 中创建了一个 vimrc 文件。请参阅下面的 .vimrc 文件。
  2. 在 Mac 上,我使用 ln -s ~/.vim/vimrc ~/.vimrc
  3. 符号链接(symbolic link)到这个 vimrc 文件
  4. 我进入了 .vim 目录并将它变成了一个 git 存储库,添加了除 .netrwhist 和 *.swp 之外的所有内容
  5. 然后我将这个存储库推送到 bitbucket。
  6. 我登录了服务器。删除了 .vim 和 .vimrc。创建了一个符号链接(symbolic link) ln -s ~/.vim/vimrc ~/.vimrc
  7. 然后我在服务器上创建了 .vim 并运行推送存储库的 git clone。我在我的 Mac 上看到了服务器上的所有文件。

所有的包都在 .vim/bundles 中。所以他们是可用的。

Vim 版本不同。那是问题所在吗?

在 Mac 上它说:

VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Dec 19 2013 15:19:49)

而在服务器上它说:

VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Jan 2 2014 19:39:32)

问题:Vim 在 Mac 上运行良好。但是在服务器上运行 vim 时出现以下错误:

Error detected while processing /home/admin/.vimrc:
line 16:
E117: Unknown function: neobundle#begin
line 20:
E492: Not an editor command: NeoBundleFetch 'Shougo/neobundle.vim'
line 26:
E117: Unknown function: neobundle#end
line 33:
E492: Not an editor command: NeoBundleCheck
line 38:
E492: Not an editor command: NeoBundle 'scrooloose/nerdtree'
line 39:
E492: Not an editor command: NeoBundle 'terryma/vim-multiple-cursors'
line 40:
E492: Not an editor command: NeoBundle 'tomasr/molokai'
line 41:
E492: Not an editor command: NeoBundle '29decibel/codeschool-vim-theme'
line 42:
E492: Not an editor command: NeoBundle 'Lokaltog/vim-easymotion'
line 43:
E492: Not an editor command: NeoBundle 'jnurmine/Zenburn'
line 64:
E185: Cannot find color scheme 'zenburn'

.vimrc 包含:

"================================================================================
" NeoBundle settings (copied from NeoBundle github page)
"================================================================================
" Note: Skip initialization for vim-tiny or vim-small.
if !1 | finish | endif

if has('vim_starting')
set nocompatible " Be iMproved

" Required:
set runtimepath+=~/.vim/bundle/neobundle.vim/
endif

" Required:
call neobundle#begin(expand('~/.vim/bundle/'))

" Let NeoBundle manage NeoBundle
" Required:
NeoBundleFetch 'Shougo/neobundle.vim'

" My Bundles here:
" Refer to |:NeoBundle-examples|.
" Note: You don't set neobundle setting in .gvimrc!

call neobundle#end()

" Required:
filetype plugin indent on

" If there are uninstalled bundles found on startup,
" this will conveniently prompt you to install them.
NeoBundleCheck
"================================================================================


" Install these packages
NeoBundle 'scrooloose/nerdtree'
NeoBundle 'terryma/vim-multiple-cursors'
NeoBundle 'tomasr/molokai'
NeoBundle '29decibel/codeschool-vim-theme'
NeoBundle 'Lokaltog/vim-easymotion'
NeoBundle 'jnurmine/Zenburn'


"================================================================================
" Editor view settings
"================================================================================
syntax on
set number

" size of a hard tabstop
set tabstop=4
" size of an indent
set shiftwidth=4
" always use spaces instead of tab characters
set expandtab

set guifont=Monaco:h16

if has("gui_running")
colorscheme codeschool
else
colorscheme zenburn
endif


"=================================================================================
" Other settings
"=================================================================================
" Use Ctrl-s to save a file in insert mode.
inoremap <C-s> <C-c>:w<ENTER>

" make working directory same as the file being edited
" may interfere with some plugins (see here: http://vim.wikia.com/wiki/Set_working_directory_to_the_current_file)
set autochdir

最佳答案

尽管这篇文章已经过时,但由于仍然没有答案,我想我可以就这个问题发表看法。当我在混合 OSX 和 Linux 的计算机之间同步我的配置目录时,我想我会分享我完成它的方式,以供将来引用,如果你确实解决了你的问题。

首先,我将我的 vim 配置分成两个目录:

  • ~/.vim/ 包含 vimrc配置文件和 neobundle,意味着在所有计算机之间共享
  • ~/.local/vim 包含包、交换文件和撤消文件。

这是第一个~/.vim/的树:

$HOME/.vim
├── README.md
├── neobundle.vim
│   ├── LICENSE-MIT.txt
│   ├── Makefile
│ └── […] (all neobundle contents)
└── vimrc

首先让我们在 ~/.vim/vimrc 中设置撤销文件文件:

" undo file
set undofile
set undodir=~/.local/vim/undofiles
set undolevels=2000
set history=200

和交换文件:

" swap files
set directory=~/.local/vim/swapfiles

这样它们就不会在计算机之间同步并相互混淆。不,您不希望在计算机 B 上撤消计算机 A,更糟糕的是,您不希望所有标准 unix /home/foo/* 与非标准 混合>/用户/foo/*

然后,在我的~/.vim/vimrc ,我通过以下方式设置 neobundle:

" NeoBundle setup {{{
filetype off
set runtimepath+=~/.vim/neobundle.vim/
call neobundle#begin(expand('~/.local/vim/bundle'))
NeoBundleFetch 'Shougo/neobundle.vim'
" }}}

这就是诀窍所​​在:您设置运行时路径以将 neobundle.vim 插件包“手动”添加到 ~/.vim 中的 vim 运行时路径,然后你通过告诉他在哪里找到/安装包来启动 neobundle。接下来在 vimrc 文件中,您设置所有您喜欢的包,最后以:

" NeoBundle Prologue {{{
call neobundle#end()
filetype plugin indent on " required!
NeoBundleCheck
" }}}

所以,现在,当我在一台新计算机上部署 vim 时,我所要做的就是:

git clone https://github.com/guyzmo/vimrc ~/.vimrc
mkdir -p ~/.local/vim/bundle
mkdir ~/.local/vim/undofiles
mkdir ~/.local/vim/swapfiles
vim +NeoBundleInstall +qall

最后,如果该解决方案回答了您的问题,那就是您必要的静态内容(什么插件和什么配置)保持同步,并在每台计算机本地生成所有动态内容。所以,你让 Neobundle 完成它的工作,克隆 git 存储库,编译和安装文件。例如,查看 youcompleteme setup,其中定义了如何根据运行 vim 的主机进行安装。而且,您再也不会遇到任何 git 问题。

HTH

关于linux - 使用 NeoBundle 时跨 mac 和 Ubuntu 服务器同步 vim 设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26747711/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com