这段代码(它是 shell 函数的一部分)完美运行:
output=$(\
cat "${vim_file}" | \
sed -rne "${EXTRACT_ENTITIES}" | \
sed -re "${CLEAR_LEADING_QUOTES}" | \
sed -re "${NORMALIZE_NAMES}" \
)
Run Code Online (Sandbox Code Playgroud)
但是当我试图在作业前插入“本地”这个词时……
local output=$(\
cat "${vim_file}" | \
sed -rne "${EXTRACT_ENTITIES}" | \
sed -re "${CLEAR_LEADING_QUOTES}" | \
sed -re "${NORMALIZE_NAMES}" \
)
Run Code Online (Sandbox Code Playgroud)
...我收到一个奇怪的错误:
local: commands.: bad variable name
Run Code Online (Sandbox Code Playgroud)
代码中没有错误的不可见字符:只有制表符在其他地方缩进和空格。该脚本以“#!/bin/sh”开头。在函数中的其他变量之前插入“local”不会导致任何问题。用另一个任意字符串替换“输出”(变量名)不会有任何改变。操作系统是Linux。
我正在尝试使用vim的快速修复(或本地)列表来获取从文件中提取的一些信息。例如,我想获取python模块的所有方法名称(这个想法是从pycharm借来的)。我想在vim的“本地列表”中得到的内容如下所示:
class Foo:
def one():
def two():
def three():
def bar():
def bazz():
Run Code Online (Sandbox Code Playgroud)
为此,我大约执行以下步骤:
:" OK, the current buffer is being used.
:let file_name = expand('%:p')
:" The heart of the process is one of vim’s grep-like command.
:execute 'lvimgrep /\v^\s*(class|def)/ '.file_name
:" I open the results with the “lopen” command because “llist”
:" doesn’t allow me to use concealing.
:lopen
:" Since I’m working with one file, I don’t need information
:" about file name, line number etc.
:setlocal …Run Code Online (Sandbox Code Playgroud)