小编one*_*tok的帖子

在 shell 脚本中的变量名之前插入“local”会导致错误

这段代码(它是 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。

bash sh

4
推荐指数
1
解决办法
87
查看次数

如何使vim的vimgrep命令保持缩进?

我正在尝试使用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)

vim

3
推荐指数
1
解决办法
95
查看次数

标签 统计

bash ×1

sh ×1

vim ×1