diff --git a/.config/nvim/init.vim b/.config/nvim/init.vim
index 2cb58f6..9e98cc4 100644
--- a/.config/nvim/init.vim
+++ b/.config/nvim/init.vim
@@ -206,6 +206,9 @@ cnoremap w!! execute 'silent! write !sudo tee % >/dev/null' <bar> edit!
 map <F3> :setlocal spell! spelllang=en_gb<CR>
 map <F4> :setlocal spell! spelllang=pl<CR>
 
+" debugger
+map <F12> :w<CR>:terminal ~/.local/bin/debugger '%:p'<CR>
+
 " latex
 let g:tex_flavor = "latex"
 autocmd BufWritePost *.tex silent! execute "!pdflatex --shell-escape -synctex=1 -interaction=nonstopmode % > /dev/null " | redraw!
diff --git a/.local/bin/debugger b/.local/bin/debugger
new file mode 100755
index 0000000..ea584a8
--- /dev/null
+++ b/.local/bin/debugger
@@ -0,0 +1,12 @@
+#!/bin/bash
+
+FILE="$(readlink -f "$(echo "$*" | cut -d' ' -f2)" 2>/dev/null)"
+
+if [ -f "$FILE" ] ; then
+    case "$FILE" in
+        *.py) python3 -m pdb "$FILE" ;;
+        *.sh) /bin/bash -ex "$FILE" ;;
+        *) printf "File \"%s\" not debugger found.\\n" "$FILE"
+    esac
+    printf "File \"%s\" not found.\\n" "$FILE"
+fi