Bash Vim E194:没有替代文件名来代替'#';用于使用'#';找出字符串的长度

Bash Vim E194:没有替代文件名来代替'#';用于使用'#';找出字符串的长度,bash,vim,Bash,Vim,我有一个单行命令,它输出一行中字符串的每个字母: ❯ a="string"; for ((i=0; i<${#a}; i++)); do echo "${a:$i:1}"; done s t r i n g 我怎样才能解决这个问题 我正在尝试将这些行插入到VIM中。在命令行中,VIM允许某些特殊占位符引用当前(或备用)文件名。这对于Ex命令(例如:split#)和shell命令(例如:!python%)都很有用 因此,如果这些字符应按字面理解,则需要对其进行转义(通过在前加反斜杠);这

我有一个单行命令,它输出一行中字符串的每个字母:

❯ a="string"; for ((i=0; i<${#a}; i++)); do echo "${a:$i:1}"; done

s
t
r
i
n
g
我怎样才能解决这个问题


我正在尝试将这些行插入到VIM中。

在命令行中,VIM允许某些特殊占位符引用当前(或备用)文件名。这对于Ex命令(例如
:split#
)和shell命令(例如
:!python%
)都很有用

因此,如果这些字符应按字面理解,则需要对其进行转义(通过在前加反斜杠);这就是原因

在您的情况下,需要转义的只是
#

:r !a="string"; for ((i=0; i<${\#a}; i++)); do echo "${a:$i:1}"; done

:r!a=“字符串”;对于命令行中的((i=0;i),Vim允许某些特殊占位符引用当前(或备用)文件名。这对于Ex命令(例如
:split#
)和shell命令(例如
:!python%
)都很有用

因此,如果按字面理解这些字符,则需要对其进行转义(通过在前加反斜杠);解释了这一点

在您的情况下,需要转义的只是
#

:r !a="string"; for ((i=0; i<${\#a}; i++)); do echo "${a:$i:1}"; done

:r!a=“string”for((i=0;我会是一个更好的询问的地方。请参阅
命令中有一些特殊字符。您需要转义
。您还可以使用
a=“string”保存shell循环;fold-w1@Barmar转义有效,谢谢。这是一个更好的提问方式。请参阅
命令中有一些特殊字符:
命令。您需要转义
#
。此外,您还可以使用
a=“string”fold-w1@Barmar转义有效,谢谢。