Я наслаждался путешествием по использованию Vim, а затем Neovim. На самом деле я начал интересоваться и использовать его, когда делал git rebase -i ... , мне очень понравился рабочий процесс, когда можно было заменить, затем перейти куда-то в предложение, затем быстро удалить слово и заменить другим, без всей ерунды CTRL+-> и т. д. .

Однако…

… Мне никогда не удавалось заставить все работать вместе… до сих пор. Для меня это был медленный процесс обучения, поскольку я сосредоточился на изучении других вещей. Итак, позволив всем этим знаниям медленно усвоиться, мне, наконец, удалось получить работу, и без дальнейших церемоний.

Установить все

Необходимые инструменты:

  1. Менеджер пакетов (шоколад, домашнее пиво)
  2. .NET SDK (можно сделать из диспетчера пакетов)
  3. fsautocompletedotnet tool install fsautocomplete
  4. Neovim (я делаю из менеджера пакетов)

NvChad

Возможно, вы прочитали в заголовке что-то о NvChad, это эквивалент стандартной установки для неовима, все, что нам нужно, чтобы добраться до IDE. Прежде чем мы начнем установку NvChad, просто запустите nvim из командной строки, прежде чем делать что-либо еще, и просто окунитесь в минималистскую славу.

Теперь установите NvChad по этой ссылке, не забудьте выбрать свою операционную систему. Windows и Mac хранят конфигурацию neovim в разных местах, и эта команда указывает на конкретный каталог.

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

Чтобы увидеть приведенный выше экран, после того как вы выполнили nvim, вам просто нужно нажать Space+e, чтобы вызвать проводник дерева файлов — здесь вы, надеюсь, увидите удивительную природу NvChad, позволяющую получить опыт работы с IDE одной строкой.

Итак, следующим шагом будет использование либо стрелок направления, либо клавиш j k для перемещения вверх и вниз по древовидному представлению, затем нажмите Enter в каталоге lua, а затем снова в каталоге custom.

Эх, Винда...

Итак, если вы столкнулись с этой проблемой и используете Windows, вы можете установить choco install winlibs, чтобы получить ее. После того, как вы обновили переменную $env:PATH с каталогом winlibs bin (она должна сделать это автоматически, и только в случае выполнения refreshenv в текущей оболочке, мне пришлось сделать это вручную :( ) это должно показать это

M.plugins = "custom.plugins"

Все, что нам нужно сделать, это ввести строку выше в этот файл. Просто сделайте j j o и начните вводить M., и вы увидите всплывающее окно этого удивительного автозаполнения, линзы кода, как бы вы это ни называли!

Используйте Tab для перечисления списка, затем нажмите Enter, когда вы дойдете до plugins, как только вы полностью введете эту строку, просто нажмите Esc, затем введите :w, и это сохранит файл.

Затем нам нужно нажать Space+e, чтобы снова вернуться к древовидному представлению, это должно вернуть вас к выделению файла chadrc.lua (если это не так, перейдите к нему), наконец, нам нужно нажать Space+a, чтобы создать новый файл, который будет называться plugins.lua

После того, как вы открыли этот файл, нам нужно добавить следующее

local plugins = {
  {
    "neovim/nvim-lspconfig",
    config = function ()
      require "plugins.configs.lspconfig"
      require "custom.configs.lspconfig"
    end
  },
  { "ionide/Ionide-vim" }
}
return plugins

Я использовал репозиторий Ionide, чтобы узнать имя, которое я должен указать здесь, но NvChad не использует плагин vim, я думаю, он использует Lazy.

Как только вы обновите файл с этим текстом (вы можете просто нажать i, когда вы находитесь в файле, и ввести как обычно), просто нажмите Esc и :w, чтобы записать файл.

Теперь нам нужно создать файл custom/lspconfig.lua, чтобы мы могли создать экземпляр плагина ionide. Если вы впервые видите LSP , это расшифровывается как Language Server Protocol и представляет собой стандартный API, который позволяет языковым клиентам (neovim, vscode) взаимодействовать стандартным образом с языковыми серверами (C++, C, C#, F#, Rust, JavaScript, TypeScript).

Теперь, когда мы создали этот файл, теперь нам нужно поместить в него пользовательский LSPconfig, чтобы при загрузке ionide он был подключен к LSP.

local on_attach = require("plugins.configs.lspconfig").on_attach
local capabilities = require("plugins.configs.lspconfig").capabilities

require('ionide').setup {
  on_attach = on_attach,
  capabilities = capabilities,
}

Если вы снова откроете neovim, вы увидите, что он устанавливает этот плагин.

Затем нам нужен init.lua , чтобы создать его, вы можете повторить шаги, описанные выше: Space+e, чтобы сфокусировать древовидное представление, Space+a, чтобы создать новый файл и назвать его init.lua, и, наконец, нажмите Enter, чтобы загрузить этот файл.

В этом файле нам нужно убедиться, что когда вы открываете файл F#, он устанавливает тип файла fsharp , как только nvim понимает, что это файл F#, он может загрузить соответствующий LSP .

local autocmd = vim.api.nvim_create_autocmd

-- dont list quickfix buffers
autocmd({ "BufNewFile", "BufRead" }, {
  pattern = "*.fs,*.fsx,*.fsi",
  command = [[set filetype=fsharp]]
})

О, Windows/Linux…

Если вы проверите свой файл bashrc или profile, если нет упоминания о .dotnet/tools, тогда это нужно будет добавить в путь, просто добавьте следующий код

if [ -d "$HOME/.dotnet/tools" ] ; then
    PATH="$HOME/.dotnet/tools:$PATH"
fi

Бег F#

Первым делом нам нужно создать новый проект F#.

$ dotnet new console -n NvimFsharp -o ./nvimfsharp -lang f#

Затем нам нужно сменить каталог и запустить nvim.

Когда он откроется, используйте Space+e, чтобы открыть древовидное представление, затем откройте Program.fs, и вы должны увидеть FSAC загрузку проекта в строке состояния внизу.

Теперь мы можем начать кодировать…

После того, как вы что-то написали, вы можете нажать Alt+h или Alt+v (в зависимости от того, хотите ли вы горизонтальный или вертикальный), чтобы открыть nvterm (терминал), и ввести dotnet run, чтобы посмотреть, как это работает!

Надеюсь, это пролило свет на совместное использование neovim и F#. После этого есть много мест, где можно настроить среду так, как вы хотите, но удивительность этого заключается в том, что вы можете настроить и настроить все.

Один из важных выводов из этого заключается в том, что если вы хотите поддерживать другие языки, процесс будет примерно таким же. За исключением других языков (включая C#), LSP можно установить через Mason, набрав :Mason в neovim.

Но как только вы это сделаете, вам нужно убедиться, что вы настроили пользовательскую конфигурацию LSP и установили SDK, которые поддерживают этот LSP. Например, clangd, показанный на скриншоте выше, нуждается в компиляторе clang gcc; gopls потребуется установить go; rust-analyzer понадобится установить через rust и его менеджер пакетов. Для автоматического добавления их в конфиг LSP см. документацию.

Дайте мне знать о вашем опыте, когда вы пробовали это, упомянул ли я все или забыл упомянуть что-либо!