vim 影响字符串的空符号 ^@
vim null symbol effecting string ^@
我正在使用以下函数来获取选定的测试
let s:drawscript = "somerandom.py"
func! GetSelectedText()
normal gv"xy
let result = getreg("x")
normal gv
return result
endfunc
vnoremap <tab><tab> :<c-u>call Box(GetSelectedText())<CR>
func! Box(text)
let s:b = '"' . a:text . '"'
echom s:b
" exec boxcmd
"echom 'hi'
let c = ["python3", s:drawscript, s:b]
execute ":.!".join(c, " ")
endfunc
我正在尝试将文本 selected 传递到我的 python 文件,当我只有 select 1 行时它有效,但是当我 select 多行时行,selected 文本中有“^@”符号导致自动执行,从而导致错误。我只想将我 select 编辑到 .py 文件中的文本传递进来。
这是转义 shell 的特殊字符的问题。当您正确地想到引用文本时,您错过了转义行分隔符。有一个函数 shellescape()
可以解决这个问题,所以你可以替换
let s:b = '"' . a:text . '"'
来自
let s:b = shellescape(a:text, 1)
我正在使用以下函数来获取选定的测试
let s:drawscript = "somerandom.py"
func! GetSelectedText()
normal gv"xy
let result = getreg("x")
normal gv
return result
endfunc
vnoremap <tab><tab> :<c-u>call Box(GetSelectedText())<CR>
func! Box(text)
let s:b = '"' . a:text . '"'
echom s:b
" exec boxcmd
"echom 'hi'
let c = ["python3", s:drawscript, s:b]
execute ":.!".join(c, " ")
endfunc
我正在尝试将文本 selected 传递到我的 python 文件,当我只有 select 1 行时它有效,但是当我 select 多行时行,selected 文本中有“^@”符号导致自动执行,从而导致错误。我只想将我 select 编辑到 .py 文件中的文本传递进来。
这是转义 shell 的特殊字符的问题。当您正确地想到引用文本时,您错过了转义行分隔符。有一个函数 shellescape()
可以解决这个问题,所以你可以替换
let s:b = '"' . a:text . '"'
来自
let s:b = shellescape(a:text, 1)