Den fre 9 sep. 2022 10:50Jirka Novak <[email protected]> skrev:

> Hi,
>
>    I'm maintaining set of docker containers. We use convention that
> every config file for a container is in /srv/<container>/ subdirectory.
> E.g. /srv/<container>/etc/cron.daily/logrotate.
>    We use vim to maintain config files and we like feature/shortcut 'gf'
> which opens file on cursor. E.g. logrotate file contains:
>
> #!/bin/sh
>
> /usr/sbin/logrotate /etc/logrotate.conf
> EXITVALUE=$?
> if [ $EXITVALUE != 0 ]; then
>      /usr/bin/logger -t logrotate "ALERT exited abnormally with
> [$EXITVALUE]"
> fi
> exit $EXITVALUE
>
>    therefore when I use 'gf' on /etc/logrotate.conf, file should be opened.
>
>    The issue is that path is correct when container is running, but when
> I'm editing it from the host, it should be
> /srv/<container>/etc/logrotate.conf.
>    Therefore I'm looking for vim setting or extension of vim which will
> add requested prefix to file name when I'm opening it.
>
>    Any advice is welcome.
>

Assuming that the current file is somewhere under /srv/<container>/

    fun! DockerGf ()
      " save the current register contents
      let old_reg = @"
      " get the path under the cursor
      norm! ByE
      " remove the leading slash if any
      let path = substitute(@",'^/\?','','')
      " restore the previous register contents
      let @" = old_reg
      " get the container directory path
      let parent = substitute(expand('%:p'),'^/srv/[^/]*/\zs.*','','')
      " go to the file
      exe 'edit ' . parent . path
    endfun

    " define custom mapping to open path under cursor in container
    nnor ,dgf :call DockerGf()<cr>

If the assumption that the current file is under the container directory
may be
wrong you can use a global variable with the path to the container instead:

    :let g:container_path = '/srv/<container>/'

and replace the two lines in the function above containing "parent" with
just

      exe 'edit ' . g:container_path . path

There may be more elegant ways...



>                                         Best regards,
>
>                                                 Jirka Novak
>
> --
> --
> You received this message from the "vim_use" maillist.
> Do not top-post! Type your reply below the text you are replying to.
> For more information, visit http://www.vim.org/maillist.php
>
> ---
> You received this message because you are subscribed to the Google Groups
> "vim_use" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/vim_use/83a3be50-3ac6-abfb-9491-8c9e6524aca0%40netsystem.cz
> .
>

-- 
-- 
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_use/CADAJKhBZDWG%2BPChdb%2BjO%2BSFdSSJUhoUDt9H_4TS2pAuVdhAffA%40mail.gmail.com.

Reply via email to