💾 Archived View for gemini.mcgillij.dev › vimde.gmi captured on 2024-02-05 at 09:33:58. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2023-01-29)
-=-=-=-=-=-=-
:author:
mcgillij
:category:
Linux
:tags:
Linux, Nvim, Vim, Plugins, Python, Telescope
:date:
2022-08-04 23:00
:slug:
vimde
:summary:
NeoVim IDE, I put together somewhat recently and some folks were asking me to post about it.
:cover_image:
vimde.png
Yet another set of
configurations. There’s no shortages of custom Neovim configurations floating around.
You can find it on Github
repository.
I’ve used several myself including
, but once I started adding some of the missing functionality that I wanted, it started breaking apart.
I mainly enjoy doing development in a REPL, being able to quickly run my code in bits and pieces, similar to a Jupyter notebook, but without the hassle of having to work in an web editor.
By popular demand (some folks were asking about my configuration, so here it is).
The goals I set out to achieve are:* Python REPL Driven development (with tmuxp)
This set of configurations, provides a usable neovim configuration for editing one off files, as well as working within a project structure (in a git repo, is the assumption here).
When editing regular files, you can just use your regular *vi, vim or nvim* alias’s.
However if you are within a git repo (preferably Python project, since we start up an IPython REPL).
Run the "vimde" command, to spin up a *tmux* split session with IPython and *NVim*.
You can highlight code and send it over to the REPL with a double "CTRL-C".
Neovim + IPython and some plugins to work with a REPL workflow.
This repo is mainly a backup of my working configurations, but feel free to use them if you want to. If you aren’t interested in running IPython along side neovim in TMUX, you can just grab the *.config/nvim/init.vim* and still have a fancy setup.
With this setup I can use my regular *nvim* when editing files or doing some brief work, but I can also use the *vimde* command if I’m working within a well defined Python project with dependencies managed by Poetry.
This allows me to follow some REPL driven development and debugging and allows me to detach the session and come back to it later.
This configuration depends on a few Linux tools being available in the environment.
For Tmux + IPython: - tmux - tmuxp - neovim - some fonts with emojis
Neovim Plugins: - pyenv (not required but you probably want this if your writing any amount of Python) - poetry - nodejs - ripgrep - fd
Setting this up takes a bit of effort as you need to know how to install / manage the plugins required to make this work. When first loading your *nvim* you may get some Errors since the plug-in manager needs to be installed.
Follow along here:
https://github.com/junegunn/vim-plug
to install *Plug* or copy *.local/share/nvim/site/autoload/plug.vim* from this repo.
Once *Plug* is installed, you can install / fetch all the plugins defined in the configuration with *:PlugInstall*
Note: I did have to manually clone the vim-slime repo into my *~/.config/nvim/plugged* folder since *Plug* didn’t seem to want to download it, however it picked it up after I had cloned it manually. Note (this isn’t really required unless you plan to use IPython in a separate TMUX pane).
You can issue a *:LspInfo*, *:LspInstall pyright bashls terraformls tflint* to get the language servers once the plugins have been loaded.
Once the plugins are installed you should be able to activate GitHub Copilot with the following command: *:Copilot* this only has to be done once.
Any extra directions or configurations you can follow along by reading the *init.vim* file. To open this in nvim use the *,ec* command, and once you save any modifications you can hot-reload the configuration with *,sc*
This assumes a fresh user on a fresh Linux install, allowing me to quickly setup my environment on a different machine. I just clone the repo, and then move all the files to ~/, and make sure that my *PATH* has *~/bin* in it.
Fire up Nvim, and Run the **:PlugInstall**, **:LspInstall pyright**, **:LspInstall bashls**, **:TSInstall python**, **TSInstall bash**