Я наслаждался путешествием по использованию Vim
, а затем Neovim
. На самом деле я начал интересоваться и использовать его, когда делал git rebase -i ...
, мне очень понравился рабочий процесс, когда можно было заменить, затем перейти куда-то в предложение, затем быстро удалить слово и заменить другим, без всей ерунды CTRL+->
и т. д. .
Однако…
… Мне никогда не удавалось заставить все работать вместе… до сих пор. Для меня это был медленный процесс обучения, поскольку я сосредоточился на изучении других вещей. Итак, позволив всем этим знаниям медленно усвоиться, мне, наконец, удалось получить работу, и без дальнейших церемоний.
Установить все
Необходимые инструменты:
- Менеджер пакетов (шоколад, домашнее пиво)
- .NET SDK (можно сделать из диспетчера пакетов)
fsautocomplete
—dotnet tool install fsautocomplete
- 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).
Теперь, когда мы создали этот файл, теперь нам нужно поместить в него пользовательский LSP
config, чтобы при загрузке 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
см. документацию.
Дайте мне знать о вашем опыте, когда вы пробовали это, упомянул ли я все или забыл упомянуть что-либо!