关于这个问题,到处都有大量不是很有帮助的答案。我已经尝试过好几个了。有些会要求我更改我访问的每台远程计算机上的设置。有些承诺只需在我的本地计算机上进行一些更改即可运行,但失败了。
这个问题收集了一些我尝试过的解决方案。
所以,首先:是否可以更改本地计算机上的设置,以便为我通过 ssh 远程访问的所有计算机启用语法突出显示?
如果是这样,怎么办?
请注意,我在 Windows 10 上使用 Bash for Ubuntu,并且主要连接到运行 Ubuntu 或 Debian 的计算机。
我特别想突出显示的命令/程序是:
ls stuff
history | grep stuff
vim stuff
答案1
这个答案不涉及语法突出显示具体来说,而是在多台机器上保持一致配置的问题。
您无法通过本地系统上的配置更改轻松更改远程系统上实用程序的行为,尤其是当您正在考虑配置一系列不同的应用程序时。
如果您的主目录安装在网络共享上,例如 NFS,那么对~/.bashrc
本地计算机上的例如文件或其他文件的本地修改显然会传递到远程系统(如果远程系统安装了相同的共享)。
下一步(如果无法在不同系统上共享主目录)将按照您希望的方式设置本地配置,然后使用 或scp
或rsync
类似的方法将它们复制到远程系统。如果您打算调整本地配置,那么编写一个简单的脚本来执行此操作可能是个好主意。
这样的脚本可以很简单(未经测试)
#!/bin/bash
configs=( "$HOME/.bash_profile" "$HOME/.bashrc" )
remotes=( "host1" "host2" )
for remote in "${remotes[@]}"; do
scp "${configs[@]}" "$remote:"
done
下一步是将相关的配置文件保存在某种描述的网络感知文件修订控制系统中,例如 Git。这还允许您为特定机器或 Unix 风格创建分支,同时还使您可以轻松地通过网络访问配置。
另请注意,不同的实用程序尽管使用相同的名称,但在不同系统上的实现或版本可能不同,因此需要不同的配置。这意味着此处的 Bash 等配置可能会破坏您的 shell。这种破坏的一个明显来源是 Bash 版本 3 和 Bash 版本 4 之间的差异,或者某些(非 Linux)系统不使用 GNU coreutils(它提供了ls
其他类似的 shell 工具)这一事实。
我努力解决以下方面的差异文件系统布局(尝试设置一个 shell,其初始化脚本在不同 Unices 上的帐户之间共享时出现另一个问题,这需要我PATH
在不同主机上进行不同的设置)在我的~/.profile
(我正在使用ksh93
而不是bash
)中,如下所示:
PATH="$( getconf PATH )"
case "$(uname -s)" in
OpenBSD) PATH="$PATH:/usr/local/sbin:/usr/games" ;;
NetBSD) PATH="$PATH:/usr/X11R7/bin" ;;
esac
答案2
通过 ssh 获取颜色并不总是那么容易完成。
您必须确保您需要的所有配置文件都已复制到其他主机。 Vim 需要对颜色进行某些设置,这些设置在.vimrc
和.bashrc
中。这篇博文描述如何自动将点文件复制到您连接的任何计算机。
它用LocalCommand
,OpenSSH 客户端在本地计算机上执行命令的能力。
为了完整起见,该命令在此处重新打印,并对 bash: 进行了更正
PermitLocalCommand yes LocalCommand tar c -C${HOME} .bashrc .vim .vimrc \ | ssh -o PermitLocalCommand=no %n "tar mx -C${HOME}
。
根据您为ls
或 的输出着色的方式grep
,您可能需要其他配置文件。
上面tar ssh tar
是一个命令模式,很常见,它允许将多个文件复制到远程计算机。
如果这不能解决您的问题,您将必须提供更多信息。你用薄荷吗?你定了TERM
吗?你的.vimrc
和.bashrc
是什么样的?你想在 vim 中使用哪种配色方案?您使用任何奇特的着色工具吗? ...