#Klooienmetcomputers

YouCompleteMe

Arnout van Kempen over rommelen in een digitale wereld.

Langzaam maar zeker begint Vim een echte IDE te worden. Eerder liet ik zien hoe Bacon op de achtergrond het werk in Rust in de gaten kan houden. En hoe in Vim met een aantal plugins kan worden gewerkt om de ondersteuning van Rust te optimaliseren. Inmiddels heb ik daar met het nodige geworstel nog wat fraais aan kunnen toevoegen: YouCompleteMe.

Deze plugin heeft wel wat voeten in de aarde. Om te beginnen zullen we Vim opnieuw moeten installeren. Dus de oude Vim er uit, opnieuw van GitHub halen, maar dit keer vóór we gaan compileren eerst de configuratie zo aanpassen dat Vim gebruik kan maken van Python3. Daartoe dient het commando ./configure in de directory waar je de broncode van Vim in plaatst. Met de opties —with-features=huge —enable-multibyte —enable-rubyinterp —enable-python3interp —with-python3-config-dir=XXX, waarbij XXX de directory is waar je python3 config directory is (even zoeken dus!) krijg je een versie van Vim die is voorbereid op wat meer fratsen die je nog in de toekomst kan bedenken, waaronder dus gebruik van Python3 door Vim. Ik deed dit in een aparte directory in mijn home en kopieerde vervolgens de nieuwe vim over de oude heen. Die oude kan je vinden met het commando which vim. Dat zal een beschermde directory zijn, dus de nieuwe Vim kopieer je daarheen met sudo cp . XXX vanuit de directory waarin de nieuwe Vim staat naar waar de oude staat.

Vervolgens moet je de plugin YouCompleteMe installeren. Met google vind je makkelijk de webpagina van deze plugin, en uitleg hoe te installeren vanaf GitHub. Belangrijk is hier vooral dat je, als je alles lokaal hebt staan, nog het installatiescript draait: python3 install.py —racer-completer.

Als dat allemaal goed gaat pas je .vimrc aan,  start Vim op en geeft daar het commando :PlugInstall. Herstarten van Vim maakt dat alles zou moeten werken. Voorwaarde is natuurlijk wel dat je de plug-in manager vim-plug nog hebt geïnstalleerd de vorige keer.

Als je zonder Cargo werkt, mis je voordelen van zowel Bacon als van YouCompleteMe en natuurlijk van Cargo zelf, dus ik adviseer dringend om vanaf nu altijd met Cargo te werken. Doe je dat, dan zal je merken dat je in Vim nu over een aantal uiterst nuttige functies beschikt. YouCompleteMe levert je met name een meedenkend systeem op, dat probeert te voorspellen wat je aan het typen bent en dat je de kans geeft dan snel iets in te voeren. Zo zal je als je pri hebt ingevoerd al als voorstel krijgen dat af te maken als println!(. Met een simpele tab of enter wordt de tekst voor je ingevuld.

Gebruik je de hierna genoemde .vimrc, dan heb je deze tekst-autocomplete; je krijgt regelnummers, leesbare (!) foutmeldingen en waarschuwingen in Vim, netjes aangewezen in de kantlijn. En iedere keer dat je je bestand opslaat met :w wordt de opmaak automatisch aangepast aan de Rust-standaarden. Dat begint toch echt ergens op te lijken!

Ik gebruik de volgende .vimrc en ik nodig je uit om te experimenteren met wat elke regel precies doet en of je daar blij van wordt:

set runtimepath+=/usr/share/vim/vim82
set backspace=2
set number
set incsearch
set hlsearch
set showcmd
set showmatch
set ignorecase
set autowrite
set nocompatible   
filetype off
set encoding=utf-8

call plug#begin('~/.vim/plugged')

Plug 'rust-lang/rust.vim'
Plug 'Valloric/YouCompleteMe'

call plug#end()

let g:ycm_key_list_select_completion = ['<Tab>', '<Down>', '<Up>', '<Left>', '<Right>', '<Enter>']
let g:ycm_key_list_previous_completion = ['<S-Tab>', '<<Up>']

let g:rustfmt_autosave = 1
let g:rustfmt_emit_files = 1
let g:rustfmt_fail_silently = 0

autocmd BufWritePre *.rs :RustFmt

inoremap jj <ESC>

Wie mee wil doen met #klooienmetcomputers kan dat doen via GitHub. Maak een account op github.com en zoek naar Abmvk/kmc. Het account Abmvk volgen kan ook. Lezers zijn vrij te gebruiken wat ze willen en om zelf zaken toe te voegen of aan te passen, vragen te stellen of commentaar te leveren.

Arnout van Kempen di CCO CISA is Senior manager Risk & Compliance bij Baker Tilly. Hij schrijft op persoonlijke titel. Hij is lid van de Commissie Financiƫle verslaggeving & Accountancy van de AFM en lid van de signaleringsraad van de NBA. Daarnaast is hij diaken van het bisdom 's-Hertogenbosch.

Gerelateerd

reacties

Reageer op dit artikel

Spelregels debat

    Aanmelden nieuwsbrief

    Ontvang elke werkdag (maandag t/m vrijdag) de laatste nieuwsberichten, opinies en artikelen in uw mailbox.

    Bent u NBA-lid? Dan kunt u zich ook aanmelden via uw ledenprofiel op MijnNBA.nl.