Live data from Hacker News

Bcvi – run vi over a 'back-channel' (2010)

sshmenu.sourceforge.net

21–30 of 30 posts

Re: Bcvi – run vi over a 'back-channel' (2010)

#21
post #18

Earlier quoted context omitted.

Sure, but that makes all the difference. I often work on an embedded remote machine with quite restricted vim (can't use a custom config, particularly no language packages). When I am on the remote machine (typically I have to run local commands), I often discover I have to edit a python file (typically just minor edits). So to use vim sftp://host/path/to/file I have to open a new terminal copy the path and then open…

Can you install bcvi on that remote machine? (Genuine question - when I've been in similar situations, it also would have been a no-go to install a binary.

[deleted]

Re: Bcvi – run vi over a 'back-channel' (2010)

#22
post #18

Earlier quoted context omitted.

Can you install bcvi on that remote machine? (Genuine question - when I've been in similar situations, it also would have been a no-go to install a binary.

It depends, compiled binaries, no. If it's a shell script yes. Python or Perl maybe. But I agree ideally it would work by transferring a script (or aliases ...) across the ssh link and remove it afterwards.

Looks like it's all Perl:

https://github.com/grantm/bcvi

But it's not a single consolidated script.

Re: Bcvi – run vi over a 'back-channel' (2010)

#25
post #20

I prefer sshfs for something like this. Then I can create files the regular way and edit files with my local neovim config.

Sure, but that usually implies that you have a tighter organization. Like you have a specific remote directory that you're mounting. This bcvi thing just lets you visit any directory anywhere on the host and edit a random file, without any mounting discipline.

Re: Bcvi – run vi over a 'back-channel' (2010)

#26
Nice!

I do something like this with WezTerm. When I ssh into a server where I work, I can run

    e some/path/whatever
which just prints a special string containing some control characters, the server hostname and the path. The local wezterm parses it and calls emacsclient with the appropriate TRAMP path. So ssh to server, work there, call `e ~/.bashrc` and the remote file immediately opens in my local emacs. This is really useful when I am in some deep directory structure.

I use the same mechanism to play remote videos - running `mpv experiment/output_foobar.mp4` just prints the special string, which the WezTerm terminal emulator parses and plays the video using my laptop mpv video player. Really really useful for me every day. I run some experiments, can inspect the results immediately. I also have the "reverse scp" which I use from time to time. `rscp foobar.py /tmp/` causes my laptop to download the foobar.py from the current working directory on the remote server into local /tmp/.

The mechanism is explained here [1] and here [2]

The bash function `e` on the server just prints the special string to SetUserVar with name remotemacs and value hostname---path. In wezterm config I have:

    wezterm.on('user-var-changed',
        function(win, pane, name, value)
            if name == "remotemacs" then
         -- remotemacs:hostname---path
         local match_start, match_end, hostname, path = string.find(value, "^(.-)[-][-][-](.-)$")
         local tramp_path = "/ssh:" .. hostname .. ":" .. path
         wezterm.background_child_process {'sh', '/home/loskutak/scripts/remotemacs', tramp_path}
[1] https://wezterm.org/config/lua/window-events/user-var-change...

[2] https://wezterm.org/recipes/passing-data.html

Re: Bcvi – run vi over a 'back-channel' (2010)

#28
post #20

I prefer sshfs for something like this. Then I can create files the regular way and edit files with my local neovim config.

Sure, but that usually implies that you have a tighter organization. Like you have a specific remote directory that you're mounting. This bcvi thing just lets you visit any directory anywhere on the host and edit a random file, without any mounting discipline.

I just mount root of the remote system.

Re: Bcvi – run vi over a 'back-channel' (2010)

#29
I'd expect the next generation of terminals to do this out of the box when using SSH.

I never want to run the server's vi[m]/emacs/nano if I already have my own local one completely set up. I don't want to run the remote's bash - I have mine already customized! I want to open a new tab in my terminal - and have it connected to the remote, as if I opened a new tab on the server's terminal.

It's the remote's files and process tree and resources what I want to interact with - but I'd rather leverage my local settings as much as possible.

Post reply on HN