Комментарии 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) Я сторонник с нуля собирать, но полезно смотреть за чужим опытом. Отличные готовые сборки:
Я рад, что у vim появится более-менее сносный язык программирования, но вот конфиг на lua, как по мне, вообще нечитаемый.
-- ]p - вставить на строку выше, [p - ниже use 'tpope/vim-unimpaired'
К слову, это очень классный плагин, который много чего другого делает удобным.
Я из него часто пользуюсь переходами по объектам из quickfix ([q
, ]q
), файлами и буферами (f и b соответственно, с теми же префиксами).
Ещё есть полезные "переключатели": нумерация строк, относительная нумерация строк (удобно для демок отключать, чтобы не шокировать публику), подсветка строки и колонки (опять же на демо удобно включить, чтобы все видели положение курсора), проверка орфографии и ещё пачка.
А куда делся ‘set keymap=russian-jcukenwin’?
Очень классная статья, спасибо! Читая про Vim, всегда найдёшь для себя новое - полезное. Кстати, на прошлой неделе прошёл двухдневный VimConf 2021 - трансляция велась на Твитче. С помощью yt-dlp можно легко скачать и посмотреть оффлайн. Несколько выступлений были как раз по Lua.
Читая про Vim, всегда найдёшь для себя новое - полезное
https://habr.com/ru/post/586946/
Не всегда :) . Вот вроде читал про вим, но уши в трубочку сворачивались от такой статьи и бреда.
Да это просто очередной вброс в споре "чем мотоциклы лучше лошадей" от человека, который просто не любит лошадей, но пытается обосновать свою нелюбовь логическими доводами на конференции коннозаводчиков.
Literate lua для этого нет? Для vim был проект https://github.com/thcipriani/literate-vimrc. Можно сочетать плюсы от хранения конфига в одном файле с удобством навигации по markdown?
На самом деле в Lua/Neovim есть только три хорошие вещи:
Выучить новый язык - это весело. Если для автора этот пункт действительно стоит на первом месте, то мое почтение. Хотя может стоило тогда поучить Lua и без привязки к Neovim'у?
Можно писать по-настоящему большие и сложные плагины (а никакой не "init", который что на Lua, что на VimScript будет работать одинаково). Вот только я с ужасом представляю как кто-нибудь теперь возьмет да и напишет builtin web browser, "чтобы было как в emacs'е". Вот такого нам точно не надо!
Можно обращаться к OS API напрямую из модулей расширения Lua. Сам такое делал, чтобы работать с системным clipboard'ом без костылей типа xclip/xsel/wl-copy и разный прочий win32yank. Классная штука, но редко кому нужная. Плюс 99% кода будет на том же C, так что под пункт "изучить Lua" влезает с очень большой натяжкой.
Все остальное - это действительно "мода для гиков". Использовать разные плагины, держать свой код в удобочитаемом состоянии и т.п. можно хоть на Lua, хоть на VimScript. А если не получается, то виноваты во всем руки, но никак не язык.
>Единственная проблема возникла с перечитыванием конфигов
Ну так require же имеет свой кэш и просто так повторно ничего читать не хочет. Можно его, конечно, принудительно вычищать как рекомендуют по ссылке, но правильнее, наверное, в init'е все сразу сделать через dofile. Но тогда придется указывать путь полностью.
как в luа прописать noswapfile?
vim.opt.noswapfile = true
Может так?
пичалька что по neovim нет канала в телеге, вопросов миллион, как сделать что бы можно было мышкой регулировать размер окон? почему табы в верху не закрываются по нажатию на крестик? как переключаться между окнами?
Спасибо за статью сподвигла меня на интересный опыт))
Телеги нет. Но есть большая тусовка на редите. Там можно любые вопросы задавать, те что не смоги нагуглить. Я писал о редите в своей прошлой статьи. Гляньте, народ на редите отвечает на вопросы.
На счет ваших вопросов. Думаю, что поддержка мышки не включена:
vim.opt.mouse = 'a'
Тогда и крестик заработает и размер можно будет менять с ее помощью. Хотя, конечно, лучше без нее обходится, ибо эти секунды очень дороги, когда до нее тянешься, лучше один раз разобраться как это делать с клавиатуры.
Not a valid option name: noswapfile
del
Простите что я вам надоедаю, а можно как то в неовим отображать цвет и иконки? используемые в коде?))
Не очень понял о каких конкретно цветах и иконках идет речь.
В bufferline есть удобная функция BufferLinePick, выбор вкладки одной буквой, получается даже быстрее чем искать через fzf (и close еще так же умеет делать).
Как выбранную строку вставить в файл? я нажимал и шифт ентер и контрл ентер, как ее вставить в текст?))
Это норма что он делает подсказки с дублем?
Вместо "cohama/lexima.vim" можно взять вот такой, который на lua
https://github.com/windwp/nvim-autopairs
Впечатление, что плагин nvim-tree не работает: "Это не команда редактора: NvimTreeRefresh".
Help для nvim-tree работает, но самих его команд не появилось. Во всяком случае, при neovim версии 0.6.1
Спасибо за статью, на ее основе и основе конфигов себе склепал тоже конфигурацию на 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?
Блинский заведите канал в телеге по неовимчику ааа))) пазязя
Как я переписывал vim конфиг в init.lua