RPH - blog

Blog programisty

Vim jako edytor programisty

Opublikowany: Niedziela 05.06.2016
0

Nie będzie to unikalny post, w sieci można znaleźć całą masę tekstów promujących Vima jako edytor dla programisty. Pomimo to, chciałbym zaprezentować swoją konfigurację, której używam na codzień, głównie do pisania kodu C++.

Vim jest edytorem, który używam zarówno w pracy, jak i w domu. Być może, zostanę, przez zwolenników Vima, oskarżony o herezję, ale używam również innych edytorów. Zacząłem używać edyotra Emacs, posiada on narzędzie do organizowania życia jakim jest Org mode. W pracy używam też Eclipse, a to z tego względu, że projekt nad którym pracuję składa się z kilku milionów linii kodu, co byłoby ciężko ogarnąć korzystając tylko z Vima oraz narzędzi uniksowych. Niemniej uważam, że Vim jest najlepszym edytorem tekstu, a za pomocą zestawu kilku wtyczek można zrobić z niego IDE dla języka C++. Tworząc własne projekty używam właśnie Vima.

Pomoc Vima

vim help

Nie będę odsyłał do jakichś tutoriali, czy też filmów, aby nauczyć się Vima. Z drugiej strony uważam, że takie materiały są ważne wtedy, gdy ktoś zaczyna od zera. Jeżeli ktoś już zna podstawy Vima, tzn. przynajmniej potrafi otworzyć, zedytować i zapisać jakiś plik, powinien przeczytać kilka pierwszych rozdziałów oficjalnej pomocy. Pomoc można otworzyć poleceniem :help. Uważam, że 4 pierwsze rozdziały powinny wystarczyć na początek. Opanowanie tego materiału znacząco przyspieszy edycję tekstu.

Podstawowa konfiguracja

Konfiguracja Vima dla użytkownika znajduje się w pliku ~/.vimrc. Fragment mojej konfiguracji jest poniżej:

" PATHOGEN
execute pathogen#infect()
filetype plugin indent on

" konfiguracja podstawowa
syntax on
set number
set tabstop=4
set shiftwidth=4
set softtabstop=4
set autoindent
set hlsearch
set incsearch

if has("gui_running")
    set lines=50 columns=150
endif

set nobackup
set noswapfile

Konfiguracja zawiera włączenie wtyczki pathogen, który to umożliwia łatwiejsze zarządzanie wtyczkami do Vima. Następnie jest cała masa przyjaznych opcji, takich jak włączenie kolorowania składni, numerowanie linii w pliku, szerokość wcięć, automatyczne wcięcia, opcje wyszukiwania. Myślę że nazewnictwo jest intuicyjne. Dalej znajduje się ustawienie rozmiaru okna dla GUI (graficzny Vim uruchamiany poleceniem gvim) oraz wyłączenie plików zapasowych.

Wygląd

vim aldmeris

Tematem jaki sam używam jest Aldmeris. Jest to port tematu Oblivion znanego z edytora Gedit. Wygląda on bardzo dobrze i w trybie tekstowym i w GUI. Jeżeli chcesz stosować vima razem z tmuxem, możesz mieć problemy z wyświetlaniem tła. Aby to poprawić powinieneś zastosować się do porad z tej strony: http://sunaku.github.io/vim-256color-bce.html.

Sam wolę używać Vima w trybie graficznym. Ma to jedną zaletę – gdy włączone jest numerowanie linii można zaznaczyć tekst i skopiować go do schowka systemowego bez numerów linii.

Wtyczki

Wtyczki jakie poniżej przedstawię, ułatwiają mi pracę nad projektami w C++. Wtyczki te są jednak uniwersalne lub wspierają więcej języków programowania, dlatego mogą się nimi zainteresować nie tylko programiści C++.

vim-arline

airline

Arline to wtyczka która dodaje własny pasek stanu, na którym znajduje się wiele użytecznych informacji, takich jak tryb Vima, informacje z VCS (liczba dodanych, zmienionych, usuniętych linii), nazwa pliku, rozpoznana składnia itp. Aby airline ładnie wyglądało należy zainstalować pakiet fonts-powerline.

Moja konfiguracja airline:

set laststatus=2
let g:airline_powerline_fonts = 1

if !exists('g:airline_symbols')
    let g:airline_symbols = {}
endif


set shortmess+=I

Git-gutter

Vim gitgutter

Vim-gitgutter wstawia z lewej strony, przy numerach lini, znaczniki, które wskazują, czy linia została dodana, zmodyfikowana, lub czy jakiś linie zostały usunięte.

TComment

TComment to wtyczka, która ułatwi komentowanie linii. Można po prostu zaznaczyć kilka linii i szybko je zakomentować lub odkomentować, co ułatwia pracę nad kodem.

YouCompleteMe

YouCompleteMe

YouCompleteMe to must have każdego programisty. Jest to code completer, który wspiera wiele języków programowania. Sam używam tej wtyczki dla projektów C++, jednak wspiera ona Pythona, TypeScript, JavaScript, Rust, a nawet C#!

Dodatkowo YouCompleteMe potrafi przejść do deklaracji danej klasy, metody, co ułatwia pracę nad projektem. YouCompleteMe posiada możliwość sprawdzania pliku pod względem poprawności, jednak do tego celu wolę używać wtyczki Syntastic. Moja konfiguracja wygląda tak:

" YouCompleteMe
let g:ycm_show_diagnostics_ui = 0
let g:ycm_goto_buffer_command = 'new-tab'
let g:ycm_confirm_extra_conf = 0

" YouCompleteMe keybindings

map <F3> :YcmCompleter GoTo<CR>
map <F4> :YcmCompleter GoToDefinition<CR>
map <F5> :YcmCompleter GoToDeclaration<CR>

Syntastic

Syntastic

Syntastic jest wtyczką, która przeprowadzi analizę plików pod względem wykrytych błędów. Sam używam jej dla C++, ale ta wtyczka ciągle mnie zaskakuje, automatycznie potrafi weryfikować pliki xml lub nawet Sass :).

Moja konfiguracja Syntastic prezentuje się następująco:

" Syntastic
set statusline+=%#warnings#
set statusline+=%{SyntasticStatuslineFlag()}
set statusline+=%*

let g:syntastic_always_populate_loc_list = 1
let g:syntastic_auto_loc_list = 1
let g:syntastic_check_on_open = 1
let g:syntastic_check_on_wq = 0

" Syntastic C
let g:syntastic_c_check_header = 1
let g:syntastic_c_config_file = 'syntastic_c.config'
let g:syntastic_c_no_include_search =1
let g:syntastic_c_compiler = 'clang'

" Syntastic C++
let g:syntastic_cpp_check_header = 1
let g:syntastic_cpp_config_file = 'syntastic_cpp.config'
let g:syntastic_cpp_no_include_search = 0
let g:syntastic_cpp_compiler = 'g++'

ctrlp.vim

ctrlp.vim Jest to wtyczka, dzięki której można bezpośrednio z vima wyszukiwać pliki, tagi i inne. Bardzo użyteczna gdy w grę wchodzi duży projekt.

Zakończenie

Zaprezentowałem tylko kilka wtyczek, które są wartościowe z punktu widzenia programisty C++, nie oznacza to, że Vim nie może być edytorem dla innych języków programowania. Wprost przeciwnie, Vim posiada taką ilość wtyczek, że każdy użytkownik może go dostosować do własnych potrzeb. Mam nadzieję, że przez ten wpis, pomogę komuś skonfigurować Vima, tak aby stanowił dla niego wygodny edytor, który będzie wzmacniał produktywność lub przynajmniej zainspiruję kogoś, aby zainteresował się tym edytorem. Uważam, że warto :)


Nie ma jeszcze komentarzy

Zostaw komentarz