Pull to refresh

Comments 38

Я тоже прошел этим путем и переписал свой конфиг на lua.

Полезные ссылки, которые мне помогли при этом:

1) Гайд на русском языке (есть и английский там же) о том как переехать https://github.com/kuator/nvim-lua-guide-ru

2) Удобный кик-старт. Да, там все в одном файле, но зато можно сразу запустить и разобраться что к чему https://github.com/nvim-lua/kickstart.nvim

3) Толковый видео ролик на эту тему: https://www.youtube.com/watch?v=ppMX4LHIuy4

Всего 10 минут. Очень понятно объясняет.

4) Я сторонник с нуля собирать, но полезно смотреть за чужим опытом. Отличные готовые сборки:

https://github.com/NvChad/NvChad

https://github.com/LunarVim/LunarVim

Так же с помощью lua можно навести порядок, разбить на файлы для удобства, чтобы горячие клавиши были в одном файле, настройки в другом, а плагины в третьем

В VimL тоже можно.

$ cat ~/.vim/vimrc
set nocompatible

silent function! IsUnix()
    return has('unix') && !has('macunix') && !has('win32unix')
endfunction

silent function! IsWindows()
    return has('win16') || has('win32') || has('win64')
endfunction

if IsWindows()
    let g:root_dir = "~/vimfiles"
elseif IsUnix()
    let g:root_dir = "~/.vim"
endif

let g:conf_dir = root_dir . "/vimrc.d"
exec "source" . g:conf_dir . "/_init.vim"

$ cat ~/.vim/vimrc.d/_init.vim 
exec "source" . g:conf_dir . "/plug.vim"
exec "source" . g:conf_dir . "/plugin-settings.vim"
exec "source" . g:conf_dir . "/commands.vim"
exec "source" . g:conf_dir . "/settings.vim"
exec "source" . g:conf_dir . "/autocommands.vim"
exec "source" . g:conf_dir . "/mappings.vim"
exec "source" . g:conf_dir . "/colors.vim"

Для себя пока смыла в neovim не вижу. Пока на серверах vim и bash, модные штуки типа neovim и fish останутся уделом гиков. А vim, как и bash, пока никуда уходить не собираются. Даже не знаю, к счастью это или к сожалению.

Я рад, что у vim появится более-менее сносный язык программирования, но вот конфиг на lua, как по мне, вообще нечитаемый.

-- ]p - вставить на строку выше, [p - ниже
use 'tpope/vim-unimpaired'

К слову, это очень классный плагин, который много чего другого делает удобным.
Я из него часто пользуюсь переходами по объектам из quickfix ([q, ]q), файлами и буферами (f и b соответственно, с теми же префиксами).
Ещё есть полезные "переключатели": нумерация строк, относительная нумерация строк (удобно для демок отключать, чтобы не шокировать публику), подсветка строки и колонки (опять же на демо удобно включить, чтобы все видели положение курсора), проверка орфографии и ещё пачка.

Спасибо. Я в свое время поставил его ради "строка выше/ниже", а оказывается многое упустил.

Переназначение клавиш удобно делать через b0o/mapx.nvim — он эмулирует семантику VimL и добавляет новые фишки.

Спасибо. Попробую через этот плагин сделать кнопку для релоада конфига и для открытия конфига.

Очень классная статья, спасибо! Читая про Vim, всегда найдёшь для себя новое - полезное. Кстати, на прошлой неделе прошёл двухдневный VimConf 2021 - трансляция велась на Твитче. С помощью yt-dlp можно легко скачать и посмотреть оффлайн. Несколько выступлений были как раз по Lua.

Читая про Vim, всегда найдёшь для себя новое - полезное

https://habr.com/ru/post/586946/

Не всегда :) . Вот вроде читал про вим, но уши в трубочку сворачивались от такой статьи и бреда.

Да это просто очередной вброс в споре "чем мотоциклы лучше лошадей" от человека, который просто не любит лошадей, но пытается обосновать свою нелюбовь логическими доводами на конференции коннозаводчиков.

Да, ладно если бы просто не любил, но был бы при этом профессионалом в лошадях. Тогда было бы любопытно почитать. Но тут ведь и знания равны нуля.

С таким же успехом я могу прийти к эндокринологам и прочитать им лекцию о гормонах, в которых я ни в зуб ногой.

На самом деле в Lua/Neovim есть только три хорошие вещи:

  1. Выучить новый язык - это весело. Если для автора этот пункт действительно стоит на первом месте, то мое почтение. Хотя может стоило тогда поучить Lua и без привязки к Neovim'у?

  2. Можно писать по-настоящему большие и сложные плагины (а никакой не "init", который что на Lua, что на VimScript будет работать одинаково). Вот только я с ужасом представляю как кто-нибудь теперь возьмет да и напишет builtin web browser, "чтобы было как в emacs'е". Вот такого нам точно не надо!

  3. Можно обращаться к OS API напрямую из модулей расширения Lua. Сам такое делал, чтобы работать с системным clipboard'ом без костылей типа xclip/xsel/wl-copy и разный прочий win32yank. Классная штука, но редко кому нужная. Плюс 99% кода будет на том же C, так что под пункт "изучить Lua" влезает с очень большой натяжкой.

Все остальное - это действительно "мода для гиков". Использовать разные плагины, держать свой код в удобочитаемом состоянии и т.п. можно хоть на Lua, хоть на VimScript. А если не получается, то виноваты во всем руки, но никак не язык.

>Единственная проблема возникла с перечитыванием конфигов

Ну так require же имеет свой кэш и просто так повторно ничего читать не хочет. Можно его, конечно, принудительно вычищать как рекомендуют по ссылке, но правильнее, наверное, в init'е все сразу сделать через dofile. Но тогда придется указывать путь полностью.

пичалька что по neovim нет канала в телеге, вопросов миллион, как сделать что бы можно было мышкой регулировать размер окон? почему табы в верху не закрываются по нажатию на крестик? как переключаться между окнами?
Спасибо за статью сподвигла меня на интересный опыт))

Телеги нет. Но есть большая тусовка на редите. Там можно любые вопросы задавать, те что не смоги нагуглить. Я писал о редите в своей прошлой статьи. Гляньте, народ на редите отвечает на вопросы.

На счет ваших вопросов. Думаю, что поддержка мышки не включена:

vim.opt.mouse = 'a' 

Тогда и крестик заработает и размер можно будет менять с ее помощью. Хотя, конечно, лучше без нее обходится, ибо эти секунды очень дороги, когда до нее тянешься, лучше один раз разобраться как это делать с клавиатуры.

Cогласен полнотью, НО буду поэтапно пробовать юзать) пока сложно отказаться от мышки))

Not a valid option name: noswapfile
vim.cmd('set noswapfile')  

Можно вот так запускать. Но мне кажется в этой команде больше нет нужды.

Простите что я вам надоедаю, а можно как то в неовим отображать цвет и иконки? используемые в коде?))

Не очень понял о каких конкретно цветах и иконках идет речь.

те что идут перед номерацией строк, белый квадратик.зеленый квадритик, и на нижнем слайде иконка +

Надо понять какой плагин у вас отвечает за это. Покажите список плагинов, которые вы используете.

скрины из вскода, были сделанны, как такое можно сделать в неовим?

В bufferline есть удобная функция BufferLinePick, выбор вкладки одной буквой, получается даже быстрее чем искать через fzf (и close еще так же умеет делать).

Как выбранную строку вставить в файл? я нажимал и шифт ентер и контрл ентер, как ее вставить в текст?))
Это норма что он делает подсказки с дублем?

Обычно с помощью ctrl -n и ctrl-p (вниз, вверх) выбирают нужный вариант, а потом уже Enter.

Дубли не норма.

Впечатление, что плагин nvim-tree не работает: "Это не команда редактора: NvimTreeRefresh".
Help для nvim-tree работает, но самих его команд не появилось. Во всяком случае, при neovim версии 0.6.1

Странно, а у меня все работает на этой версии.

Отбой тревоги. После :PackerSync вдруг заработало

Спасибо за статью, на ее основе и основе конфигов себе склепал тоже конфигурацию на lua.

Наткнулся интересный момент:

-- fzf
map('n', '<C-a>', [[ <cmd>lua require('telescope.builtin').find_files()<cr> ]], default_opts)
map('n', '<C-p>', [[ <cmd>lua require('telescope.builtin').buffers()<cr> ]], default_opts)

Похоже что между <cr> и ]] надо убрать пробел, иначе этот пробел попадает в поле ввода попапа поиска. Я первое время не мог понять, почему попап пустой и файлы не находит. Оказалось, в попапе в поле ввода первый символ всегда был пробел.

И еще я сделал построчное коментирование ближе к тому как в Идее сделано:

-- C-/ for commeting current line
map('', '<C-_>', [[ lua require("Comment.api").toggle_current_linewise()<cr><down>]], {noremap = true, silent = false })

Смог кто то заставить работать autopairs вместе с nvim-cmp?
Блинский заведите канал в телеге по неовимчику ааа))) пазязя

Only those users with full accounts are able to leave comments. Log in, please.