Emacs tramp-mode 的基於 Vim 的替代方案
我目前正在使用
vim
(實際上neovim
)作為我的 IDE 來編寫和執行-codeGNU R
(使用Nvim-R
-plugin,另請參閱https://github.com/jalvesaq/Nvim-R,它用作我的 REPL),它適用於我的本地機器。當有更高的工作負載或需求時,我ssh
會進入遠端機器,安裝我的nvim
外掛並nvim
在伺服器上作為“本地”應用程序執行。最近我意識到它
Emacs
有一種巧妙的TRAMP
模式(透明遠端訪問,多協議,另見https://www.emacswiki.org/emacs/TrampMode),它不僅可以遠端打開文件,還可以在遠端機器上執行命令. 據我了解,這意味著我可以Emacs
用作 REPL(例如 usingESS
),使用我的本地實例編寫程式碼Emacs
,但在我GNU R
安裝的遠端機器上執行它(另請參見https://ess.r-project。 org/Manual/ess.html#ESS-processes-on-Remote-Computers)。我很想知道
vim
or是否存在類似的東西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
進入遠端機器,然後打開我要使用的文件(例如 myscript.R
orlist_of_commands.sh
),然後創建 a:vertical split
並隨後打開 a:terminal
,然後我可以在其中執行例如 myGNU R
-interpreter 或 abash
。如果更喜歡使用終端多路復用器,可以使用screen
(withCtrl-a |
Ctrl-a l
Ctrl-a c
) 或tmux
(withCtrl-b %
) 創建新的拆分,並在配置文件中使用上面的相應行(未註釋)。然後,當我呼叫
:SlimeSend
-command(縮寫Ctrl-c
Ctrl-c
為並且您的拆分已經存在,預設情況下已正確寫入)。這可能不像 中那樣優雅
TRAMP
,Emacs
但它確實有效。但是,如果有人有改進的想法,請不要猶豫,提出建議!