This is what I put in my init file:
(setq dired-guess-shell-alist-user '(("\\.pdf$" "nohup xdg-open * </dev/null >/dev/null 2>&1 &")))
It uses dired-guess-shell-alist-user as suggested in the answer by Drew and xdg-open as suggested by Lei Zaho. So when I hit ! in dired it will open the pdf with my pdf viewer picked by xdg-open (my OS is ...
Is there a way to do this in a more natural fashion?
The best way I know is to type ~ twice: the first time will restart completion from your remote home directory, and the second from your local home directory.
Quoth (ivy) Using TRAMP:
Move to the local root directory.
Move to the local home directory.
Use https://github.com/technomancy/find-file-in-project (ffip).
What ~ means does not matter. ffip will try to find file in project root using the file name under cursor.