I just started a new job where I have to ssh into a remote linux vm to work on a qt driven c++ project. I don’t really have a lot of leeway on what can be added to the remote environment, and I don’t think local development is possible. The vm has vim and qtcreator.

I’m from a Java background and I’m learning c++ for this role, while I’m comfortable in vim, I’d really like to have a tool that can give me autocomplete, jump to definition and linting. I know these things can be set up in neovim, but I asked about having that put on the box and was not given a good reaction.

I also know tools like vscode and possibly clion can be set up to do remote work via ssh. Does anyone have experience with this and suggestion on a good setup?

  • onlinepersona
    link
    fedilink
    English
    arrow-up
    4
    ·
    8 hours ago

    A few questions:

    • why do you have to SSH into a remote box?
    • do you know how the VM was created? can you recreate the dependencies?
    • which OS are you on?
    • you mention qtcreator - do you have remote desktop session?

    I ask these questions because my preliminary solutions without knowing all the details would be

    • recreate the VM locally, install the tools you need
    • mount the project on your machine with sshfs, use the tools you require locally
    • use the VM as a proxy if you’re using it to access an internal git to clone the repo to your local machine and use local tools there
    • create a remote desktop session and forward it locally either via ssh x11 forwarding or connect to it via some RDP client like remmina, krdc, or whatever your OS uses

    qtcreator has code completion btw, so you can use it for your development tasks.

    Anti Commercial-AI license

  • Otter@lemmy.ca
    link
    fedilink
    English
    arrow-up
    9
    ·
    edit-2
    10 hours ago

    Depending on what restrictions you have, you could try VSCode? That’s what students were told to do at my university for remote C / C++ development off the school’s servers

    https://code.visualstudio.com/docs/remote/ssh

    I’m not familiar with the others, but for vscode

    • click the symbol that looks like >< in the bottom left
    • potentially install the remote SSH add-on if it asks for it
    • log in
    • open the left sidebar and tell it to open the folder you are developing in
    • sacredfireOP
      link
      fedilink
      arrow-up
      2
      ·
      10 hours ago

      I think some people here are using vscode, I’ve not been a huge fan of it in the past but I should probably look into their workflow.

  • heavydust@sh.itjust.works
    link
    fedilink
    arrow-up
    5
    ·
    11 hours ago

    I’m interested to know why it’s done like that. It seems awful. Do you have some SCM like git? Do you have restrictions like working for the army? So many questions.

    I’m asking because I’ve seen that a lot in the past and it was always due to bad practices that no one wanted or could change.

    • bluGill@fedia.io
      link
      fedilink
      arrow-up
      2
      ·
      8 hours ago

      We have a similar setup where I work (enough different to think they don’t work with me, but who knows). It was done like that in our case because we ship embedded linux. Because we are building on linux and targeting linux we kept running into problems with people linking local system libraries that were not compatible with the target even though they had the same name. We eventfully wrote out own package management tool which locked things down so you can’t make that mistake - the same month we hit 1.0 conan did their first public release, if canan has been 2 years sooner we would have just contributed to that instead and saved a ton of effort, but now we have too many sunk costs in our current tools and so it isn’t worth changing to a new one.

  • Lemmist@lemm.ee
    link
    fedilink
    arrow-up
    3
    ·
    11 hours ago

    I don’t understand your problem. You have qtcreator. It is a nice IDE that can do anything C++ related. Why don’t you use it?

    • sacredfireOP
      link
      fedilink
      arrow-up
      3
      ·
      10 hours ago

      I’ve been using it via vnc, and was having a hard time with it. Perhaps I need to configure it correctly. Out of the box, jump to definition wasn’t working great and there doesn’t seem to be linting set up. Probably this is just me not knowing anything about c++ development and needing to do more research.

      • Lemmist@lemm.ee
        link
        fedilink
        arrow-up
        1
        ·
        10 hours ago

        Well, new IDE. Of course it won’t work exactly as you wish right from the start. But it is an IDE and can do anything IDE should.

  • Skydancer@pawb.social
    link
    fedilink
    Italiano
    arrow-up
    2
    ·
    10 hours ago

    Vim has its own plugin system that can provide all of the things on your list. Most people used to use a plugin manager like vim-plug or pathogen, but plugins can also be installed manually.

    With vim 8 there is built in plugin management. Just open the editor and type

    :help packages
    

    Plugins (including the plugin managers which are plugins themselves) get installed in your user’s home directory, so you can install them yourself without affecting other users or involving the sysadmins who are giving you pushback on installing other applications system-wide.

    • sacredfireOP
      link
      fedilink
      arrow-up
      1
      ·
      10 hours ago

      Interesting, I’ll probably still have to ask for permission to pull anything from the outside onto the vm, but hopefully will get less push back if it’s for a tool already installed and in use.

  • rollmagma@lemmy.world
    link
    fedilink
    arrow-up
    1
    ·
    10 hours ago

    cscope? ccls? clangd? Surely there’s something there that the other people in the team are using.

  • Drew Belloc
    link
    fedilink
    arrow-up
    1
    ·
    11 hours ago

    About a year or 2 ago i used doom emacs to ssh into my home server, it’s almost the same as opening a file in my own computer so the experience is really seamless

    • rollmagma@lemmy.world
      link
      fedilink
      arrow-up
      2
      ·
      10 hours ago

      That doesn’t really solve his issue because what he wants depends on having servers (lint, lsp) running local to the codebase/machine. Anything with emacs will be a major pain unless it’s a really small project.