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.
Diving in
The repo's 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
.vimrc
let g:dbext_default_profile_PG = 'type=PGSQL:user=postgres:passwd=:host=localhost:port=5432:dbname=@askb'
let g:dbext_default_profile = 'PG'
Note the @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 thet
, i.e.<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 aWHERE
clause. 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!
Top comments (0)