Vim/NeoVim as a (very) simple REST client
João
Posted on April 15, 2021
Whenever you need to test APIs, you can probably resort to nice GUIs like Postman or Insomnia. They let you easily create separate projects, separate API paths, and so on. I do not like to leave my editor so often, so sometimes I just want to do the API calls inside it. If you use Vim, you can just run cUrl, httpie or some other HTTP client and paste the output on your buffer.
The following function is very handy because you can use pretty much any shell command you want and the output will be handily updated in your editor.
function! Exec_on_term(cmd, pos)
exec "normal! ma"
let backup_a=@a
let backup_b=@b
let sep = "------"
exec "normal! ?".sep."\<CR>jV/".sep."\<CR>k\"ay"
exec "normal! /".sep."\<CR>jO"
if a:pos == "next"
exec "normal! O".sep
exec "normal! jddkko"
endif
exec "normal! V/".sep."\<CR>kdO"
let @b=system(@a)
execute "put b"
execute "normal! ?".sep."\<CR>jdd"
exec "normal 'a"
let @b=backup_b
let @a=backup_a
endfunction
nnoremap <Leader>dr :call Exec_on_term("normal", "curr")<CR>
vnoremap <F6> :<c-u>call Exec_on_term("visual", "curr")<CR>
nnoremap <Leader>dn :call Exec_on_term("normal", "next")<CR>
For example, if you have the following buffer contents:
-----------
curl -H "Content-Type: application/json" \
-X POST \
https://reqbin.com/echo/post/json \
-s -d '{"sample": "value"}'
-----------
output will be shown here
----------------
You just need to go anywhere between the first "-------" line and the second "------" line, and type <Leader>dr
(in my Vim config, Leader is the comma character, so ,dr
here. It will run the command and show the output between the second and the third "-------" lines:
----------------
curl -H "Content-Type: application/json" \
-X POST \
https://reqbin.com/echo/post/json \
-s -d '{"sample": "value"}'
----------------
{"success":"true"}
----------------
If you change the command, it will replace the output. If you do not want to replace the contents, you can add a new entry by using <Leader>dn
:
----------------
curl -H "Content-Type: application/json" \
-X POST \
https://reqbin.com/echo/post/json \
-s -d '{"sample": "value"}'
----------------
{"success":"true"}
-----------
output will be shown here
---------------
You can also run any CLI command, like Python code by using python -c
:
---------------------
python -c '
import os
print("this is a python script")
'
---------------------
this is a python script
---------------------
Posted on April 15, 2021
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.
Related
November 30, 2024