Форум программистов, компьютерный форум, киберфорум
Panda58dev
Войти
Регистрация
Восстановить пароль
Выкладываю всё, что считаю нужным.
Оценить эту запись

NeoVim для PHP разработчика на windows. #2 GUI для NeoVim (2021г)

Запись от Panda58dev размещена 21.05.2021 в 10:15
Обновил(-а) Panda58dev 21.05.2021 в 10:16

Вступление
После написания прошлого гайда, я пересмотрел свою конфигурацию и внёс в неё некоторые изменения.

INIT.vim
Вот как выглядит мой конфиг на данный момент:
Код:
call plug#begin('~/AppData/Local/nvim/plugged')
"Начало списка пакетов

"Утилиты
Plug 'preservim/nerdtree'
Plug 'jlanzarotta/bufexplorer'
Plug 'tpope/vim-fugitive'

"Дизайн
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
Plug 'tomasr/molokai'
Plug 'ryanoasis/vim-devicons'
Plug 'josh****/onedark.vim'
Plug 'lifepillar/vim-solarized8'

"Подстановка
Plug 'neoclide/coc.nvim', {'branch': 'release'}
Plug 'StanAngeloff/php.vim'
Plug 'mattn/emmet-vim'

"Конец списка
call plug#end()

set encoding=utf-8 
syntax enable " Включает подсветку синтаксиса
colorscheme molokai " Устанавливает тему по умолчанию

" Включение подсказок 
let g:deoplete#enable_at_startup = 1

let g:airline_theme='base16_monokai' " Тема airline 
" let g:airline_statusline_ontop=1 " Панель статуса сверху
let g:airline_powerline_fonts = 1 " Поддержка powerline шрифтов
let g:airline#extensions#tabline#left_sep = ' ' " Прямоугольные вкладки
let g:airline#extensions#tabline#enabled = 1 " Вкладки airline
let g:airline#extensions#tabline#formatter = 'unique_tail' " Отображение пути в вкладках
let g:airline#extensions#keymap#enabled = 1 "Не показывать текущий маппинг
let g:airline_section_z = "\ue0a1:%l/%L Col:%c" "Кастомная графа положения курсора
let g:Powerline_symbols='unicode' "Поддержка unicode

" Делаем так, чтобы навигация работала на русском языке
nmap о j
nmap л k
nmap р h
nmap д l
nmap ш i
nmap ф a
nmap в d

nmap Ж :
nmap ц w
nmap й q
nmap м v
nmap ы s
nmap . /

" Отмена действия
imap <C-z> <ESC>:u<Return>a
nmap <C-z> <ESC>:u<Return>
" Комментирование
imap <C-/> /**<Return><Space><Return>/<Esc>"ka 
" Сохранение
imap <C-s> <ESC>:w<Return>
nmap <C-s> :w<Return>
" Вставка 
imap <C-v> <ESC>"+Pa
nmap <C-v> "+P
" Копирование
vmap <C-c> "+Y

" Выход из терминала при нажатии на esc
tmap <ESC> exit<Return>

set noshowmode " --INSERT-- не мозолит глаза
set guifont=Hack\ NF:h15 " Настройка шрифтов (если не работает у берите "\ NF")
set number " Нумерация строк
set wrap linebreak nolist " Перенос строки при переполнении рабочей области
set cursorline " Подсветка строки с куросом

set keymap=russian-jcukenwin 
"Язык ввода при старте Вима - Английский
set iminsert=0
""Аналогично настраивается режим поиска
set imsearch=0

"Табуляция
"При нажатии Tab вставляется 4 пробела
set tabstop=4 
set expandtab
set shiftwidth=4
set smarttab
set smartindent

" В нормальном режиме Ctrl+n вызывает :NERDTree
nmap <C-n> :NERDTreeToggle<CR>
vmap ++ <plug>NERDCommenterToggle
nmap ++ <plug>NERDCommenterToggl
let g:NERDTreeGitStatusWithFlags = 1
let g:NERDTreeIgnore = ['^node_modules$']

" Перемещение по буферам
nmap <C-F5> <Esc>:BufExplorer<cr>
vmap <C-F5> <esc>:BufExplorer<cr>
imap <C-F5> <esc>:BufExplorer<cr>

" F6 - предыдущий буфер
nmap <C-F6> :bp<cr>
vmap <C-F6> <esc>:bp<cr>i
imap <C-F6> <esc>:bp<cr>i

" F7 - следующий буфер
nmap <C-F7> :bn<cr>
vmap <C-F7> <esc>:bn<cr>i
imap <C-F7> <esc>:bn<cr>i

" Ctrl + tab - переключение между вкладками
nmap <C-Tab> :tabNext<cr>
vmap <C-Tab> <esc>:tabNext<cr>
imap <C-Tab> <esc>:tabNext<cr>

" Ctrl + T создаёт новую вкладку
nmap <C-t> :tabnew<cr>
imap <C-t> <esc>:tabnew<cr>
vmap <C-t> <esc>:tabnew<cr>

" Ctrl + Q закрывает вкладку (но не буфер)
nmap <C-q> :tabclose<cr>
vmap <C-q> <esc>:tabclose<cr>
Особых изменений нет, но добавил некоторые "плюшки": создание вкладок на ctrl+t, закрытие на ctrl+q и переключение межу ними на ctrl+tab; Исправил копирование на ctrl+c, добавил поддержку других режимов у сочетаний клавиш ctrl+v, ctrl+z и т.д.; в состав плагинов теперь входят довольно знаменитая тема OneDark и, удобно настраиваемая тема solarized8. Табы (вкладки) теперь прямоугольные. В NeoVim-QT не работает. Как раз хотел рассказать о графических оболочках NeoVim.

Графические оболочки

Давайте сначала разберёмся, что это и зачем. Как наверняка все знают, vim это в первую очередь консольный редактор, т.к. он пришёл из тех времён, когда об GUI, ничего не знали. Вы спросите: "зачем же использовать тогда GUI для NeoVim?" - а я отвечу, для нормального отображения контента и цветовой схемы. Сами полюбуйтесь как выглядит NeoVim в cmd:

Нажмите на изображение для увеличения
Название: neovim0.png
Просмотров: 139
Размер:	30.0 Кб
ID:	6986

А теперь к списку GUI:

NeoVim-QT - пожалуй, самая популярная графическая оболочка редактора NeoVim, написана на C++/QT, является стандартной оболочкой NeoVim. Скриншот приводить не буду, т.к. если Вы решили скачать NeoVim на шинду windows, то nvim-qt будет в комплекте, и от этого никуда не денешься. Из плюсов могу отметить стабильность, из минусов - неудобные вкладки.

Nvy - написан на C++/DirectWrite, такой же безглючный как и прошлый претендент, минималистичный, но в этом же его прелесть. Влакдыки airline работают прекрасно, при нажатии Alt+Enter разварачивается в fullscreen (похоже, это отсылка на старый cmd), и ещё в отличии от nvim-qt в init файле можно спокойно прописывать любимый шрифт в названии которого присутствует пробел, правда перед пробелом надо поставить "". Лично я использую его, и больше ничего не надо . Скачать можно с GitHub, у проекта ещё "pre-release", но лично я никаких ошибок/багов не видел.

Название: neovim1.jpg
Просмотров: 192

Размер: 71.1 Кб

GoNeoVim - написан, как понятно из названия, на GO/QT. Изначально в нём меня привлек встроенный minimap, но как оказалось у него есть и другие плюшки: drag and drop файлов, своё файловое дерево, скролл мышкой... Тут я насторожился и скачал эту оболочку. Открыл, "смотрю, и как то всё не по приколу" - minimap не отображает где сейчас находится курсор, файловое дерево похоже на статичное, drag and drop сразу кидает в режим diff (сравнения), скролл касаниями не работает. Ну в общем, я даю 90% что криворукий я, а не разработчики, но (imho) они решили засунуть в vim "невпихуемое", то бишь управление мышью. Консольный редактор 90-х с кучей hot key-ев управлением мышью. Ну ладно. Скачать его можно так же в GitHub. Вот пару скринов с тогоже ресурса:


Следующий у нас, наверное самая красивая оболочка, FVim. Написана на "Avalonia", то бишь на F#. Начнём с плюшек: своя цветовая схема, курсор мигает (на самом деле лучше чем статический, т.к. лучше заметен), плавное перемещение курсора, улучшенная поддержка Nerd шрифтов, поддерживает эмоджи (кому они нужны?!), "могёт" в ssh, "могёт" в весло WSL, "могёт" в tmux, может поставить на фон картинку, может её позиционировать, маштабировать, открывается fullscreen при alt+enter... Короче говоря GUI где сделано чисто GUI и это радует, т.к. нет лишнего мусора. Скачать можно там же где и всё остальное.
И тут вернулась моя рукожо... ну вы поняли:
Нажмите на изображение для увеличения
Название: neovim2.png
Просмотров: 112
Размер:	21.4 Кб
ID:	6988
Но как оказалось это просто из-за того что в конфиге который я скопировал был шрифт, которого у меня нет. Но правда и заставить курсор мигать не получилось . Картинку ставил - работает. В принципе можно ставить чисто ради блюра на заднем плане и плавного курсора:
Название: neovim3.jpg
Просмотров: 189

Размер: 65.3 Кб
Но есть одно но... Он довольно сильно хавает ОЗУ, конкретно 130Мб, при том что тот же Nvy ест всего 25Мб, а чистый nvim в сmd 18Мб. Вывод делать Вам, но imho, vim должен быть мега-шустрый, иначе нафиг он нужен. Поэтому пока что я попользуюсь nvy.

Идём дальше. Вы только посмотрите, кто это у нас... GUI написанный на Electron!


Да-да, Ваши глаза Вас не подводят, на Electron. И более того, его интерфейс пытается косить под VS code. Зачем, почему, кому это надо? Так много вопросов и так мало ответов. Ну ладно, Electron так Electron, давно в браузере не писал код . И так, виновик нашего смеха - Oni. Не понимаю к чему привязано название, ну да ладно, качаем. Ух, установщик аж целых 90Мб, что же там такого лежит?!
Нажмите на изображение для увеличения
Название: neovim4.png
Просмотров: 126
Размер:	82.6 Кб
ID:	6990
Понял, закрываем, удаляем. Собственно вопрос - где тут vim? Нет, vim есть, но в настолько извращённой форме, что просто нет слов... На столько "мышевозильного" интерфейса для vim я раньше не видел. Пользоваться неудобно, т.к. многие хоткеи не работают, init.vim никак не взаимодействует на Oni. Настроек очень-очень много, в какомто json файле. В окне появлялись иногда артефакты, зачастую курсор выделял текст где попало ещё даже в режиме Normal. Единственный плюс который я нашёл - можно открыть .png, но тоже плюс относительный. Кушает это чудо 140Мб, могло быть и хуже. Скорее всего разрабы потратили много времени на эту GUI, но лично мне она не понравилась, от слова "совсем". Ну да ладно, идём дальше.

Neovide - детя языка Rust, из плюшек: анимированное перемещение курсора (анимаций несколько), прозрачность (текст тоже прозрачный), удобное сворачивание буферов, поддержка шрифтов... Но что из этого всего работает? Лично я смог увидеть только анимацию курсора. Для включения других фишек нужен запуск с опцией --multiGrid, но программа просто не открывается, к другим опциям это тоже относится. Но даже без этих опций Neovide ест 340Мб памяти. Скачать можно тут. Скрины в студию:
Нажмите на изображение для увеличения
Название: neovim5.png
Просмотров: 159
Размер:	78.7 Кб
ID:	6985

Заключение

Впринципе это все оболочки, которые мне показались интересными, остальные либо похожи, либо на windows они не пойдут. Лично я бы выбрал nvy, т.к. он меньше всех хавает ОЗУ, нет лишнего мусора, и в нём нормально работают вкладки , но окончательный выбор за вами.
Размещено в Без категории
Показов 814 Комментарии 0
Всего комментариев 0
Комментарии
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.