個人用ランタイムパスの環境変数?(* nixでは〜/ .vim、win32では〜/ vimfiles)


9

複数のマシン間でよりきれいに同期するために、.viminfoファイルを.vim/フォルダーに移動しようとしています。(.vimDropboxに保存して、ホームディレクトリからそこへのシンボリックリンクを作成します。)

それで今朝、私はそれをどのように行うかについてこの答えを見つけました。すごい!残念ながら、私は職場でWindowsを使用し、自宅でMacを使用しているため~/.vim、実際には時々使用してい~/vimfilesます。その結果、1行のソリューション

set viminfo+=n~/.vim/viminfo

5行のソリューションになりました

if has('unix')
  set viminfo+=n~/.vim/viminfo
elseif has('win32')
  set viminfo+=n~/vimfiles/viminfo
endif

それは私にとって不器用に感じます。

私はラA、ユーザ固有のランタイム・パスにアクセスするために使用できるデフォルトの環境変数のいくつかの種類がある$VIMRUNTIMEかは$MYVIMRC?それとも私が踊る必要があるのですか?

回答:


8

これは動作するはずであり、プラットフォーム/プラグインに依存しません: fnamemodify(expand("$MYVIMRC"), ":p:h")


あなたの人々は天才です。
Ryan Lue、2015

5

変更していないとすると、最初の項目&runtimepathはデフォルトでランタイムディレクトリです。

$HOME/.vim        on unix-like systems
$HOME\vimfiles    on windows

その値を使用しviminfoて、プラットフォームに依存しないこの1つのライナーでファイルを配置する場所をVimに指示できます。

let &viminfo .= ',n' . split(&rtp, ',')[0] . '/viminfo'

リソース:

:h :let-option
:h split()
:h runtimepath

悲しいことに、これは真実ではありません。 &runtimepathプラグインマネージャーによって操作されます。$HOME/.vimそれがやで始まる理由はまったくありません$HOME\vimfiles
lcd047

@ lcd047は、デフォルトの状態では、&runtimepath常に現在のプラットフォームのデフォルトのユーザーレベルのランタイムディレクトリから開始します。今では、ユーザーが自分の'rtp'認識を超えて肉屋を屠殺することは明らかに可能ですが、AFAIKの病原体、バンドル、プラグ、VAM、およびネオバンドルはすべて~/.vim、最初に(または同様の)ままになります。
romainl 2015年

デフォルトの構成でのみ。長い間、次のようなものを使用しました:pathogen#infect("$VIM/local/bundle/{}")(1)すべてのユーザーがバンドルを利用できるようにする、(2)それらをVimのメインランタイムから分離しておく、(3)自動的にアップグレードできるようにする。 ~/.vimそのセットアップで束の真ん中に終わります。
lcd047

@ lcd047、会話に従って最初の文の表現を変更しました。
romainl 2015年

私のためにそれをしました、そして私のセットアップを考えると、私は最もエレガントな解決策であると思います。ありがとう!!
Ryan Lue 2015年

2

私がWindowsに関して何度も何度も目にする最初の間違いは、常にを使用して問題を解決しようとし$HOMEていることです。

$HOME特にUnixライクな環境(Cygwin、git bashなど)を使用している場合は特に、使用すると問題が発生します。スクリプトで使用しないでください。環境変数として設定しないでください。実際、設定$HOMEするとCygwinが正しく動作しなくなり、git bashでも同様に動作します。$HOMEバグが多くなればなるほど、バグは悪化し、バグの追跡は難しくなります。使用しないでください。

Windowsは、$HOMEオンザフライで、そして舞台裏でを構築し%HOMEDRIVE%%HOMEPATH%ます。_vimrcまたはvimrc、ドットなしでこれを使用してください:

set viminfo+=n%HOMEDRIVE%/%HOMEPATH%/vimfiles/viminfo

これで問題が解決するはずです。それに応じvimfiles.vim調整するように変更した場合。


0

私がしたことは、Windowsのviminfoフォルダの名前を.vimに変更(または前者の内容を後者にコピーしてから前者を削除)し、それらをでシンボリックリンクすることmklink /d viminfo .vimでした。(mklinkは、Unixのlnコマンドとは逆の順序で引数を取ります。)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.