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转义有效,谢谢。