Тема: Досвід використання IDE для Rust
Тема для обговорення досвіду використання різних IDE для Rust.
Я спочатку використовував RustRover від JetBrains.
Дійсно дуже гарне середовище розробки, усе працює з коробки, не треба морочитися з налаштуванням.
Проте вимагає більше ресурсів, ніж просто текстовий редактор,
і є комерційним продуктом, хоча зараз безкоштовно на стадії тестування.
Але найбільший недолік — третина офісів JetBrains знаходиться в Росії...
Ще є потужний текстовий редактор Kate. Налаштовується доволі швидко,
має вбудовану підтримку Rust, безкоштовний. Але під час останнього оновлення
системи почав глючити при роботі з rust analyzer. Тому поки що чекаю,
доки його полагодять.
Також є Vim — дуже швидкий і дуже потужний текстовий редактор.
Один із перший редакторів із великою спільнотою, що підтримує його.
Якщо вам потрібна потужність із можливістю налаштувань найменших дрібниць — він для вас.
Але до нього треба звикнути, бо створювався він для роботи виключно з клавіатурою і
без підтримки графічної складової.
Тому доведеться вчити необхідні комбінації клавіш і команди.
Є ще gVim — різновид Vim із підтримкою мишки та графіки.
Зараз я використовую саме його, бо без мишки дуже важко працювати, якщо вже звик до неї.
Залишу тут свій файл налаштувань (.vimrc), який потрібно мати в домашній директорії.
Можливо, комусь знадобиться. Там мінімум налаштувань необхідних для зручної роботи.
Він працює і для gVim, і для Vim, хоча для gVim можна створити окремий файл .gvimrc.
Плагіни встановлено за допомогою Vim Plug.
" Встановлення місця розташування плагінів.
call plug#begin(has('nvim') ? stdpath('data') . '/plugged' : '~/.vim/plugged')
" Оголошення переліку плагінів.
Plug 'rust-lang/rust.vim' " Основний плагін для Rust
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } } " Плагін fzf, що дозволяє пошук файлів комадною Files
Plug 'junegunn/fzf.vim'
Plug 'dense-analysis/ale' " Плагін для підключення rust analyzer і схожих додатків
Plug 'vim-airline/vim-airline' " Лінія внизу екрана з різномантіною інформацією
Plug 'preservim/nerdtree' " Файловий менеджер
Plug 'preservim/tagbar' " Вивід дерева наявних функції, структур і т.д. присутніх у файлі
Plug 'dracula/vim', { 'as': 'dracula' } " Тема кольорового оформлення
Plug 'preservim/vim-indent-guides' " Вказівник відступів у рядках файлу
" Кінець переліку плагінів. Vim побачить їх після наступної команди.
call plug#end()
" Встановлення поточної кольрової схеми
colorscheme dracula
" Ввімкнення синтаксису
syntax enable
filetype plugin indent on
" Налаштування NERDTree
" CDC = директорія поточного файлу стає поточною директорією
command CDC cd %:p:h
" Показ / приховування NerdTree
nmap <F7> :NERDTreeToggle<CR>
" Автозапуск NERDTree та переміщення курсору до вікна поруч.
"autocmd VimEnter * NERDTree | wincmd p
" Вихід з Vim, якщо NERDTree єдине вікно єдиної вкладки.
autocmd BufEnter * if tabpagenr('$') == 1 && winnr('$') == 1 && exists('b:NERDTree') && b:NERDTree.isTabTree() | quit | endif
"Налаштування ALE
let g:ale_linters = {
\ 'rust': ['analyzer'],
\}
"let g:ale_fixers = { 'rust': ['rustfmt', 'trim_whitespace', 'remove_trailing_lines'] }
" Автодоповнення при друку
set completeopt=menu,menuone,preview,noselect,noinsert
let g:ale_completion_enabled = 1
" Відкрити перелік функцій tagbar
nmap <F8> :TagbarToggle<CR>
" Показувати відступи за умовчанням
let g:indent_guides_enable_on_vim_startup = 1
" Розмір лінії відступів
let g:indent_guides_guide_size = 1
" Встановлення повноекранного розміру вікна при старті програми
if has("gui_running")
" GUI is running or is about to start.
" Maximize gvim window (for an alternative on Windows, see simalt below).
set lines=999 columns=999
else
" This is console Vim.
if exists("+lines")
set lines=50
endif
if exists("+columns")
set columns=100
endif
endif
" Встановлення стандартного штрифту
set guifont=Monospace\ 14
" Встановлення нумерації рядків
set number
" Встановлення вертикальної лінії-обмежувача на 80 символів максимум
set colorcolumn=80
" Запуск cargo run при натисканні F5
nnoremap <F5> :!cargo run<CR>
P.S. Файл-шпаргалка з командами для Vim у прикріпленні.