comment puis-je détecter OS X dans mon .fichiers vimrc, de sorte que certaines configurations ne s'appliquera seulement aux OS X?
- Je utiliser mon .vimrc fichier sur mon ordinateur portable (OS X) et plusieurs serveurs (Solaris & Linux), et pourrait hypothétiquement un jour l'utiliser sur une machine Windows. Je sais comment détecter unix en général, et de windows, mais comment puis-je détecter OS X? (Et d'ailleurs, est-il un moyen de distinguer entre Linux et Solaris, etc. Et est-il une liste quelque part de toutes les chaînes que 'a' peut prendre? Mon Google-fu n'ont rien révélé.)
Par exemple, j'avais utiliser quelque chose comme ceci:
if has("mac")
" open a file in TextMate from vi: "
nmap mate :w<CR>:!mate %<CR>
elseif has("unix")
" do stuff under linux and "
elseif has("win32")
" do stuff under windows "
endif
Mais clairement "mac" n'est pas la chaîne de droite, ni de toutes les autres, j'ai essayé.
Mise à JOUR:
La réponse ci-dessous ("macunix") semble assez clairement comme il devrait travail, mais pour quelque raison il ne le fait pas. (Peut-être que Apple n'a pas compiler vim correctement à répondre à cela? Semble improbable).
En tout cas je suppose que j'ai besoin de changer l'orientation de la question: quelqu'un aurait-il une solution qui permettra d'atteindre les mêmes buts? (Qui est, a réussi à détecter que la .fichiers vimrc est utilisé sur Mac OS X.)
has("macunix")
fonctionne très bien avec la version de VIM installé par Homebrew, actuellement 7.4.1-936. YMMV.
Vous devez vous connecter pour publier un commentaire.
Ma mise à jour
.vimrc
utilise désormais la suivante:Ma réponse est ci-dessous
Vous pouvez essayer ce que je fais dans mon .vimrc:
Bien que, pour être complètement transparent, ma réelle .vimrc lit:
Principalement pour la détection de Linux (par opposition à OSX)
Je ne suis pas sûr si vous devez absolument le faire que
echo -n \"$(uname)\"
de trucs, mais il avait à faire avec le retour à la ligne à la fin de launame
appel. Votre kilométrage peut varier.if s:uname == "Darwin\n"
\n
à l'aide de la substitution:let s:uname = substitute(system("uname"), '\n', '', '')
has("unix")
, vous devez utiliseruname -s
au lieu deuname
.if (system('uname') =~ "darwin")
. Dansvim
, voir':h =~'
pour les autres options, comme par exemple specificying de la casselet s:uname = system("echo -n $(uname -s)")
Je ne pouvais pas modifier la réponse précédente par l'ajout de deux caractères uniquement:
Ici est correct(passé sur ma macos 10.6 et par défaut vim version console)
système("uname") viendra avec un caractère de retour, ce qui rend la deuxième si la condition a échoué. Juste un petit correctif à ajouter "\n".
Je suis en train de faire la même chose que vous. N'essayez pas de détecter le système d'exploitation. Au lieu de cela, essayer de détecter le type de vi/vim.
Vérifier
:h feature-list
pour une liste complète des conditions que vous pouvez utiliser.Voici ce que j'utilise pour détecter MacVim dans mon vimrc:
Avec cela, vous pouvez détecter pour gvim, vi, vim, et toutes les autres saveurs que vous pourriez utiliser. La bonne chose est que vous pourriez avoir vim-compatible paramètres sur OS X.
Référence de Vim liste de Diffusion
EDIT: Cette approche et de ses variantes (
has('mac')
,has('macunix')
,has('gui_mac')
)ne fonctionnent pas pour vim dans OS X. Si vous utilisez uniquement l'utilisation MacVim, vous êtes en sécurité. Si vous êtes bizarre comme moi et comme de temps en temps de sauter dans vim, l'une des autres solutions peut-être plus adapté.vim detect macvim
😛homebrew
vim
etMacVim
retourne true pourhas('mac')
,toutefois, afin de ne
has('unix')
. afin de travailler à travers toutes les plates-formes unix, une solution possible est:d'autre part, en tant que de el capitan, le système
vim
retourne la valeur false pourhas('mac')
, etuname
snooping est probablement la voie à suivre. c'est une ancienne version, jamais utilisé.Vous voulez
macunix
. Pour citer:h feature-list
:mac, autant que je sache, ne s'applique qu'à la vieille école des Macs, où \r est le séparateur de ligne.
mac
se réfère à la vieille école de Mac OS (avant OS X qui est basé sur Unix).nvim
ne l'ont pas fait au moment de la rédaction.C'est la façon la plus simple que j'ai trouvé.
gui_macvim gui_gtk2 gui_gtk gui_win32
Il y a une détection de système d'exploitation script quelque part sur stackoverflow - plusieurs mots-clés pour trouver: win64 win95 macunix...