Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 运行时间!less.sh中的变量_Linux_Bash_Vim_Ssh - Fatal编程技术网

Linux 运行时间!less.sh中的变量

Linux 运行时间!less.sh中的变量,linux,bash,vim,ssh,Linux,Bash,Vim,Ssh,使用程序附带的vim寻呼机。我正在尝试重新映射less.sh以从主目录运行,并从~/bin调用配置。我得到了一个错误: 处理命令行时检测到错误:E33:没有以前的替换正则表达式 我想我的问题是我不理解运行时!有人能解释一下运行时是什么吗!是用来做什么的 这是/usr/share/vim/vim72/macros/less.sh中的原始代码行: if test -t 1; then if test $# = 0; then vim --cmd 'let no_plugin_maps = 1

使用程序附带的vim寻呼机。我正在尝试重新映射less.sh以从主目录运行,并从~/bin调用配置。我得到了一个错误:

处理命令行时检测到错误:E33:没有以前的替换正则表达式

我想我的问题是我不理解运行时!有人能解释一下运行时是什么吗!是用来做什么的

这是/usr/share/vim/vim72/macros/less.sh中的原始代码行:

if test -t 1; then
 if test $# = 0; then
   vim --cmd 'let no_plugin_maps = 1' -c 'runtime! macros/less.vim' -
  else
   vim --cmd 'let no_plugin_maps = 1' -c 'runtime! macros/less.vim' "$@"
这就是我试图将less.sh放在~/bin/less.sh中所做的:

if test -t 1; then
 if test $# = 0; then
   vim --cmd 'let no_plugin_maps = 1' -c '~/bin/less.vim' -
  else
   vim --cmd 'let no_plugin_maps = 1' -c '~/bin/less.vim' "$@"
  fi
我通过编辑我的.bashrc别名vless=~/bin/less.sh来运行该命令:运行时命令从基于“runtimepath”选项中的一个目录的文件读取和解释Vim命令。由于大多数Vimscript文件要么随Vim自带,要么安装在用户的~/.Vim/目录中,因此这是调用脚本的一种方便方法

该命令是:source{filespec}的专门化,这是您需要使用的;filespec本身不是有效的Vim命令,Vim试图将其解释为一种模式,但无意中发现了~字符

vim --cmd 'let no_plugin_maps = 1' -c 'source ~/bin/less.vim' -
甚至还有一个快捷方式-s命令行选项:

vim --cmd 'let no_plugin_maps = 1' -S '~/bin/less.vim' -

没有任何东西会扩展该论点中的~由shell在特定位置展开,而不是在单引号中展开。在那里试试-c$HOME/bin/less.vim,看看会发生什么。运行时!正如vim在:help:runtime中所解释的那样,运行库从作为vim“runtimepath”中的参数提供的文件中运行ex命令。这个意味着运行所有匹配的文件,而不仅仅是第一个。出于好奇,为什么要使用文本编辑器作为寻呼机?