Feel free to skip over that part and head straight to the hopefully useful content here.
Almost a year and a half ago, while I was working at Repositive (a cool start-up, you should check what they do), I was convinced by mostly 2 of my colleagues to start using vim.
Soon after, I started a quest for plugins for everything! A part of that quest can be found by looking at the history of my dotfiles repo, you'll see it's a mess.
At some point during that quest, I thought of looking for a plugin that would allow me to not use things like workbench, robomongo, pgAdmin or even
psql as I tend to use most after I ditched Atom for nvim. That's when I found this plugin: DBext.vim
It promised to do all I needed and then some more! awesome!
Except, I never took the time to learn it properly hence I never used it and continued to hack my way with
psql. Fast-forward to today, I had to do a bunch of work on our database for my new ticket at Zeit.io (new website coming soon - in the meantime, if you need something done well give us a call!) and went on looking for the perfect nvim plugin again and ... wait a minute, I know this plugin! Yep... I knew it, it was already in my config and had been there for a while... So this time I decided to take learn how to use it properly or well enough at least that I would not need to use
psql anymore and could work from my text editor.
README.md sounded a good place as any to start and that 's where I saw that
DBext.vim provided a nice tutorial, it might be a bit lengthy for some but in short:
- start by setting up a connection: in my case, I wanted to connect to PSQL by default so I added this to my
let g:dbext_default_profile_PG = 'type=PGSQL:user=postgres:passwd=:host=localhost:port=5432:dbname=@askb'
let g:dbext_default_profile = 'PG'
@askb, it means that DBext will prompt me to know which database to connect once for each buffer.
then learn about a few commands that are quite handy:
<leader>sbp: if your config isn't right this will allow you to open a quick setup guide. I used it a lot while trying things at first.
<leader>slt: list the tables in your database.
<leader>st: show table, probably one of the command I use the most. It allows you to get a really quick overview of a table. Just put your cursor over a table name, type in the mapping and voilà! (If you capitalise the
<leader>sT, DBext will prompt you to know how many rows you'd like to see)
<leader>stw: Same as above but will ask you for a
WHEREclause. This is sooo neat!
<leader>sd: Describe the table instead of listing its content, this is also pretty handy.
But most importantly the feature I like the most in all of this is that I don't need to be in a SQL or any other database script: I can run all these from anywhere, from my front-end code, from the doc, from a ticket description, ... This allows me to get a quick glance at what the db holds and to get good insights on what it holds for which tables.
EDIT: since I started writing this post, I've seen the Tim pope version of this:
vim-dadbod. I haven't tried it yet, that might wait another year :D but if you've feedback about this plugin or some database recipes to share: please let me know!