This is an old revision of the document!
Table of Contents
Quel IDE choisir ?
Nous cherchons un IDE (environnement de développement intégré) pour programmer un projet en C, intégrant GDB/Valgrind, CMake et GIT. En outre, nous souhaitons avoir toutes les bonnes fonctionnalités d'un IDE : highlighting, auto-indentation, complétion intelligente, documentation Doxygen, refactoring, linter / analyse de code… De préférence, nous souhaitons que cet IDE soit distribué sous licence “libre” et qu'il soit facile à installer sous Debian/Ubuntu.
Une étude intéressante effectuée sur 100 000 programmeurs en 2018 classe Visual Studio Code en premier outil… Regardons cet outil de plus près
https://insights.stackoverflow.com/survey/2018/#development-environments-and-tools
Visual Studio Code
Installation sous Debian : https://code.visualstudio.com/
wget 'https://vscode-update.azurewebsites.net/1.24.1/linux-deb-x64/stable' -O /tmp/vscode.deb sudo gdebi /tmp/vscode.deb
Une fois code installé, on va ajouter quelques extensions importantes et recommandées.
Tout d'abord, il faut lancer l'IDE dans votre répertoire projet :
code .
Ensuite, celui-ci analyse les fichiers du projet et recommande des extensions populaires en plus des extensions déjà intégrées… Une autre façon de faire consiste à installer les extensions utiles en ligne de commande :
# C/C++ for Visual Studio Code (IntelliSense, code browsing, debugging, ...) code --install-extension ms-vscode.cpptools # GitLens — Git supercharged code --install-extension eamodio.gitlens # code --install-extension donjayamanne.githistory # code --install-extension felipecaputo.git-project-manager # Support markdown code --install-extension yzhang.markdown-all-in-one # à tester ? code --install-extension DavidAnson.vscode-markdownlint # un linter # extension pour python code --install-extension ms-python.python # CMake & CMake Tools code --install-extension twxs.cmake code --install-extension vector-of-bool.cmake-tools code --install-extension maddouri.cmake-tools-helper # utile ? # Intellisense for GNU C/C++ code --install-extension austin.code-gnu-global # Doxygen support code --install-extension cschlosser.doxdocgen # vscode extra icons code --install-extension robertohuertasm.vscode-icons # english language support (spell right) code --install-extension ban.spellright sudo apt-get install hunspell-fr hunspell-en-us # Linux ln -s /usr/share/hunspell ~/.config/Code/Dictionaries # Linux # bash beautify (indentation shell code) code --install-extension shakram02.bash-beautify # clang # code --install-extension mitaki28.vscode-clang # à vérifier ? # one dark pro theme # code --install-extension zhuangtongfa.Material-theme
A compléter…
Configuration d'IntelliSense : https://code.visualstudio.com/docs/languages/cpp
Mes raccourcis
- ctrl + p : chercher rapidement un fichier à ouvrir (file palette)
- ctrl + shift + p : chercher rapidement une commande à lancer (command palette)
- F7 : compiler le projet (à condition qu'il soit déjà bien configuré)
- ctrl + shift + i : indentation selon les règles fournies par le fichier .clang-format
- ctrl + shift + / : commenter/décommenter la sélection
- crtl + f : chercher dans le fichier courant ; F3 : next : shift + F3 : previous
- F12 / ctrl + F12 : navigation entre la déclaration et la définition d'une fonction
- ctrl + j : fermer / ouvrir le panel du bas
- ctrl + , : édition des user & workspace settings (au format JSON)
Pour aller un peu plus loin, voici une petite refcard des raccourcis clavier : https://code.visualstudio.com/shortcuts/keyboard-shortcuts-linux.pdf
A tester
D'autres trucs à tester :
* Sauvegarder sa config VS Code sous github : https://github.com/shanalikhan/code-settings-sync/ * executer une commande : https://marketplace.visualstudio.com/items?itemName=formulahendry.code-runner * Makefile simple ? à la main avec des task ? * Slides MarkDown (séparateur de slides '---') avec reveal.js dans VS Code... Utilisation de Pandoc ? * Support Docker * Support Jupyter * Code Runner (pour exécuter facilement des scripts, ou des bouts de scripts et même du C mono-fichier) * What Else?