neovim使用VIMINIT在ssh上移动配置(几乎正常工作)
因此,我试图通过ssh自动移动neovim配置,我在ssh配置中使用以下技巧:neovim使用VIMINIT在ssh上移动配置(几乎正常工作),vim,ssh,fish,neovim,Vim,Ssh,Fish,Neovim,因此,我试图通过ssh自动移动neovim配置,我在ssh配置中使用以下技巧: Host * SendEnv LC_VIMINIT RequestTTY yes RemoteCommand export VIMINIT=$LC_VIMINIT 我在这里做的是通过ssh发送环境变量LC_VIMINIT的内容,一旦它的内容被移动到VIMINIT环境变量中 为了填充LC_VIMINIT的内容,我在fish.config(fish shell)中有以下内容 当我通过ssh连接并
Host *
SendEnv LC_VIMINIT
RequestTTY yes
RemoteCommand export VIMINIT=$LC_VIMINIT
我在这里做的是通过ssh发送环境变量LC_VIMINIT的内容,一旦它的内容被移动到VIMINIT环境变量中
为了填充LC_VIMINIT的内容,我在fish.config(fish shell)中有以下内容
当我通过ssh连接并执行echo$VIMINIT时,它工作并包含我的vim配置!启动neovim时,我的配置未加载:(
如果我导出VIMINIT='set number'并启动neovim,它将显示行号,并且VIMINIT已正确加载
我不确定它为什么不工作,我目前的假设是(cat~/.config/nvm/init.vim)
删除了导致neovim忽略其内容的换行符
也许有更有经验的人可以启发我?我认为你不能做你想做的事。我的Vim副本上说: $VIMINIT的值用作Ex命令行 请注意文章“an”。在我阅读时,您可以传递单个命令行,而不是多个由换行符分隔的Ex命令行 当然,您可以尝试将它们与
|
连接起来,但这对某些Ex命令不起作用
我也不认为您可以获得一个shell并同时执行RemoteCommand
,即使您可以,RemoteCommand
也可能在一个单独的、非交互式shell中执行
大多数人只是创建一个Git存储库并以这种方式同步他们的点文件,这既简单又优雅。当然,如果你使用很多机器,这会很不方便,但是由于我有一个自定义的配色方案和各种附加插件,我只需在这种情况下使用默认值。将以下内容放入你的
.ssh/config
:
Host *
SendEnv LC_VIMINIT
RequestTTY yes
RemoteCommand export VIMINIT=$LC_VIMINIT
接下来将以下内容放入/config/fish/config.fish
:
set -gx LC_VIMINIT (cat ~/.config/nvim/init.vim | grep -P -o '^.*(?=")|^[^"]+$' | awk '{if($1~/autocmd/){ print "execute \""$0"\""} else {print $0}}' | string collect)
这里发生的是:
~/.config/nvim/init.vim
的内容autcmd
开头的每一行都被包装在execute”“
LC_VIMINIT
环境变量中(任何LC_*环境变量都可以通过ssh发送)SendEnv LC_VIMINIT
,因此在连接到主机时通过ssh发送LC_VIMINIT
VIMINIT
将填充LC_VIMINIT
的内容,因为RemoteCommand export VIMINIT=$LC_VIMINIT
我刚刚测试了
VIMINIT=$'set nu\nset rnu'vim
,它按预期工作,同时启用了'number'
和'relativeEnumber'
,因此我认为这实际上不是问题所在……也许可以使用env
命令检查环境,看看LC\u VIMINIT
是否正确?您有任何sp吗vimrc中可能不容易转换为VIMINIT的特殊设置?也许可以尝试使用较小的vimrc,直到它工作,然后再添加设置,直到它崩溃?嗯…那env
命令很方便^^^结果是命令set-gx LC_VIMINIT(cat~/.config/nvim/init.vim)
删除我本地机器上已经存在的换行符。试试:set-gx LC_VIMINIT(cat~/.config/nvm/init.vim | string split0)
…或者试试bash或zsh@filbranden,结果是cat将每一新行拆分成一个参数数组,这与bash中的情况完全相同。它与(cat~/.config/nvm/init.vim | string collect)一起工作
set -gx LC_VIMINIT (cat ~/.config/nvim/init.vim | grep -P -o '^.*(?=")|^[^"]+$' | awk '{if($1~/autocmd/){ print "execute \""$0"\""} else {print $0}}' | string collect)