Ssh

Emacs tramp-mode 的基於 Vim 的替代方案

  • January 7, 2021

我目前正在使用vim(實際上neovim)作為我的 IDE 來編寫和執行-code GNU R(使用Nvim-R-plugin,另請參閱https://github.com/jalvesaq/Nvim-R,它用作我的 REPL),它適用於我的本地機器。當有更高的工作負載或需求時,我ssh會進入遠端機器,安裝我的nvim外掛並nvim在伺服器上作為“本地”應用程序執行。

最近我意識到它Emacs有一種巧妙的TRAMP模式(透明遠端訪問,多協議,另見https://www.emacswiki.org/emacs/TrampMode),它不僅可以遠端打開文件,還可以在遠端機器上執行命令. 據我了解,這意味著我可以Emacs用作 REPL(例如 using ESS),使用我的本地實例編寫程式碼Emacs,但在我GNU R安裝的遠端機器上執行它(另請參見https://ess.r-project。 org/Manual/ess.html#ESS-processes-on-Remote-Computers)。

我很想知道vimor是否存在類似的東西neovim。我知道我可以使用遠端編輯文件

vim scp://USER@SERVER:PORT//absolute/path/to/file

或者

vim
:e scp://USER@SERVER:PORT//absolute/path/to/file

但據我了解,這實際上會在我的本地機器上創建文件的臨時副本;執行我的Nvim-R-REPL 時,這會在本地打開工作目錄/tmp/something

我想過嘗試vim-slime(參見https://github.com/jpalardy/vim-slime>)、`repl.nvim`(參見<https://github.com/HiPhish/repl.nvim)或neoterm(參見https://github.com/kassio /neoterm),但我不確定我是否能夠嘗試複製類似Emacs的體驗。

有任何想法嗎?有沒有人取得類似的成就?

免責聲明:我已經回答了這個問題,vi.SE為了完整起見,我只複製了答案。


我仍然沒有找到完美的解決方案,但一個對我來說相當有效的解決方案:使用vim-slime(僅用 編寫vimscript)。

在我的配置文件(~/.config/nvim/init.vim~/.vimrc)中,我使用以下行:

let g:slime_target = "neovim"
"let g:slime_target = "vimterminal"
"let g:slime_target = "screen"
"let g:slime_target = "tmux"

只需要其中之一。第一行用於neovim,但如果我vim使用的是第二行(未註釋)。在我的工作流程中,我正在ssh進入遠端機器,然後打開我要使用的文件(例如 my script.Ror list_of_commands.sh),然後創建 a:vertical split並隨後打開 a :terminal,然後我可以在其中執行例如 my GNU R-interpreter 或 a bash。如果更喜歡使用終端多路復用器,可以使用screen(with Ctrl-a | Ctrl-a l Ctrl-a c) 或tmux(with Ctrl-b %) 創建新的拆分,並在配置文件中使用上面的相應行(未註釋)。

然後,當我呼叫:SlimeSend-command(縮寫Ctrl-c Ctrl-c為並且您的拆分已經存在,預設情況下已正確寫入)。

這可能不像 中那樣優雅TRAMPEmacs但它確實有效。但是,如果有人有改進的想法,請不要猶豫,提出建議!

引用自:https://unix.stackexchange.com/questions/606695