web-dev-qa-db-fra.com

Existe-t-il un fichier de syntaxe C++ 11 pour vim?

En particulier, l'affichage des listes d'initialisation est vraiment mauvais:

vector<int> v({1,2,3});

mettra en évidence les accolades en rouge (indiquant une erreur).

64
Neil G

Il existe maintenant un script C++ 11 de http://www.vim.org/scripts/script.php?script_id=3797 , qui ne marque plus les accolades entre parenthèses comme des erreurs. 

32
kennytm

Comme alternative, vous pouvez utiliser

let c_no_curly_error=1

dans votre fichier .vimrc de sorte que vim ne balise pas {} comme erreur dans ().

34
thrust

Si vous utilisez Syntastic , ajoutez ceci à votre .vimrc (ou .vimrc.local).

let g:syntastic_cpp_compiler_options = ' -std=c++11'

Syntastic affiche les erreurs pour le code écrit en plusieurs langues. Chaque langue a un "vérificateur" qui est un wrapper pour exécuter un programme externe. Le programme externe pour le vérificateur c ++ est g ++. Le vérificateur c ++ peut transmettre les options du compilateur à g ++ et peut être configuré.

https://github.com/scrooloose/syntastic/wiki/C--:---gcc

Si vous voulez utiliser clang ++, vous pouvez utiliser ces options

let g:syntastic_cpp_compiler = 'clang++'
let g:syntastic_cpp_compiler_options = ' -std=c++11 -stdlib=libc++'
25
Chad Skeeters

utiliser une initialisation uniforme au lieu du constructeur old ()

vecteur v {1,2,3};

9
Keke

Pour autant que je sache, un travail est en cours pour cela, voir ici à la liste de diffusion vim_dev.

6
Tarantula

Un correctif amélioré pour le support C++ 11 a été envoyé à la liste de diffusion: https://groups.google.com/forum/?fromgroups#!topic/vim_dev/ug_wmWQqyGU

4
Ricardo

Vous pouvez également configurer cela dans un fichier de configuration syntastique local.

Déposez un fichier .syntastic_cpp_config dans la racine de votre projet et donnez-lui les arguments du compilateur un par ligne (j'ai également les chemins d'accès à la bibliothèque Loki à titre d'exemple):

-std=c++11
-Ilib/loki/include
-Ilib/loki_book/include
1
LostSalad

Si vous utilisez YouCompleteMe, vous pouvez modifier '.ycm_extra_conf.py' comme ceci: (chemin du fichier ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py);

changer uniquement les drapeaux

flags = [
'-std=c++11',
'-O0',  
'-Werror', 
'-Weverything', 
'-Wno-documentation', 
'-Wno-deprecated-declarations', 
'-Wno-disabled-macro-expansion', 
'-Wno-float-equal', 
'-Wno-c++98-compat', 
'-Wno-c++98-compat-pedantic', 
'-Wno-global-constructors', 
'-Wno-exit-time-destructors', 
'-Wno-missing-prototypes', 
'-Wno-padded', 
'-Wno-old-style-cast',
'-Wno-weak-vtables',
'-x', 
'c++', 
'-I', 
'.', 
'-isystem', 
'/usr/include/', 

]

1
MulticsYin

J'ai recherché les autres propositions concernant le fichier de syntaxe C++ 11 de VIM et elles sont anciennes et non gérées. Quoi qu'il en soit, les distributions récentes de Vim ont déjà de bons fichiers de syntaxe. Parfois, ils sont cependant mis à jour et la source officielle des fichiers de syntaxe est ici: https://github.com/vim-jp/vim-cpp

0
Rado