问题标签 [viml]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
51 浏览

vim - 在宏中退出 exe 模式

我有一个大文件,我试图重新格式化,其中涉及删除每个副本 2 到 100 行的第 2 到第 n 个重复集。

数据看起来像

我想在第一个实例之后删除元素中的重复,所以我当然变得复杂了:)并做了一个类似的宏

在宏中将当前行上的第一个元素拉到寄存器 p 中,然后处理行将第一个元素拉到寄存器o中,然后执行,仍然在宏中

现在这工作正常,除非它到达部件保持模式@p<>@o的行,直到我手动转义一次或两次然后执行 命令。:norm! j::norm! j

我用一种更简单的方法解决了这个问题,但想知道为什么它只出现在不会离开 :ex 模式的 else 部分。

0 投票
1 回答
2082 浏览

vim - 如何从 Vim 中发送转义序列?

所以最近苹果已经支持在终端的状态栏中显示工作目录和文件。必须发送(设置当前文件)的转义序列是这样的:

哪里Ptfile://指向当前正在编辑的文件的 url。所以我想我可以让 Vim 将此命令作为转义序列发送,但我遇到了一些麻烦。到目前为止我有这个:

但我有一种感觉,它不会像那样工作。另外,我不知道如何将当前文件作为file://url 获取,尽管我怀疑 netrw 可能能够帮助我。有任何想法吗?

编辑

到目前为止,我有这个:

但它仍然不起作用 -$HOSTNAME没有得到扩展。任何人有任何关于如何使其扩展的提示?

编辑 2

好的,所以我对引号和导出的内容进行了一些更改$HOSTNAME,现在可以正常打印了。但是,vim 并没有像字面地呼应转义序列,而是将它们打印为^[,这使它们毫无用处!所以我真正的问题来了:你如何让 vim 向 shell 发送文字转义序列?

成功!

最终代码如下:

0 投票
2 回答
277 浏览

vim - Vim:在 NERDTreeCWD 和 NERDTreeClose 之间切换的快捷方式

我希望能够使用相同的快捷方式跳转到 NERDTree 中的文件并关闭 NERDTree。我没有使用 VimL 的经验,可以使用一些帮助。

0 投票
1 回答
790 浏览

vim - 在 VimScript 中使用寄存器变量

我在 vim 脚本中有以下代码(文件名:文件):

我正在以下文件(文件名:out)上执行此代码:

我正在使用以下运行命令:

输出是:

我不明白为什么在Thatand之间打印空格1
另外,在编写 vimscript 时,我对如何使用寄存器变量感到有些困惑。有人可以解释一下吗?

0 投票
1 回答
92 浏览

vim - 从omnifunc调用时getbufline缺少当前行

我目前正在尝试为 vim 编写一个插件,它允许我为给定的语言定义一个自定义的omnifunc。

除了当我调用getbufline(为了获取当前缓冲区的内容)时,我几乎可以让它工作,结果包含一个空行而不是当前行的内容。

这是我目前正在使用的功能:

奇怪的是,如果我从 vim via echom statemachine#GetCurrBuffContents()then 调用我的函数,我会看到预期的输出,即每一行由一个\n字符分隔。

示例:缓冲区包含以下内容

如果我在光标位于第 2 行时点击 cx co (触发omnicompletion),我会看到以下内容(我在我的插件中回显它):

input signal x^@^@^@state State2^@if x == false goto State2^@end

如果我运行echom statemachine#GetCurrBuffContents(),我会看到以下内容:

input signal x^@input^@^@state State2^@if x == false goto State2^@end

以下是相关代码: https ://github.com/scotopell/vim-statemachine/blob/3c3c3803f24031cce676e3988daaff12c269142a/autoload/statemachine.vim#L33

编辑:现在它已经修复了,这是我目前正在使用的代码。请参阅 Ingor 关于为什么存在该代码的答案

0 投票
1 回答
301 浏览

vim - 将文本从一个 vim 缓冲区发送到另一个?

设置:具有多个选项卡、窗口和缓冲区的 Vim 会话。

目标:制作 Ex 命令,将选定文本从活动缓冲区发送到会话中的另一个缓冲区(最好使用自动完成)。我的意思是文本被附加目标缓冲区的末尾

示例:假设您在一个名为的缓冲区中apple,并且在另一个选项卡中命名了另一个缓冲区banana。您突出显示要发送到的文本banana(例如,包含文本“asdf”的行,然后键入:'<,'>append ban<TAB>,vim 将自动完成文本到:append banana。按回车后,vim 将字符串“asdf”从中剪切并附apple加到末尾banana.

我最接近的是:'<,'>!cat >> banana; 然而,这只适用于香蕉与苹果在同一个工作目录中的情况,并且它无法使用现有的缓冲区名称自动完成。

有没有办法构建一个 vim 脚本/viml 函数来做到这一点?

0 投票
1 回答
309 浏览

vim - 定义取决于缩进级别的语法区域

我正在尝试在 Vim 中为 reStructuredText 构建一个更轻的语法文件。首先,当在行尾遇到 "::" 时,文字块开始:

但是,文字块可以在缩进但不是文字的其他结构内:

所以,问题是:如何制作一个检测压痕的区域?我使用以下规则做到了这一点:

它工作得很好,但有一个问题:出现在行中的任何匹配或区域应该由“start”匹配接管语法规则。例子:

它不会使我的规则起作用,因为有一个“链接”规则接管了这种情况。这是因为msme匹配的参数,但我不能把它们去掉,因为它只会给整条线着色。

有什么帮助吗?

谢谢!

0 投票
2 回答
239 浏览

vim - 检查是否在NERDTree

NerdTree 文档说切换最大化(缩放)和最小化 NERDTreeShift-a是关键。

我将 .vimrc 配置为常规拆分窗格最大化/最小化

因此,基本上要在 vim 中缩放常规窗口,我按下Space -并缩小,Space +但是当 NERDTree 打开时,这表现不佳。当 NERDTree 打开并且我Space -放大时,但当我按下Space +它时不再缩小,代码窗口和 NERDTree 窗口同样如此。

0 投票
1 回答
101 浏览

vim - 如何从vim中的函数返回一个空格?

例子:

如何退回空间?
return ' ' 被视为 return ''
return 'myvalue' 被视为 return 'myvalue'

0 投票
2 回答
101 浏览

vim - 对齐文本,如何划分单词之间的空格?

我正在创建一个新函数来证明文本的合理性。我知道有一些插件,但它们并没有做我想做的事情,所以我决定自己创建一个函数。

前:

后:

我首先要做的是找到单词的数量和非空格字符的数量(对于我文本中的每一行):

然后找到空格:

我必须划分单词之间的空格:

但是通常它是一个浮点数。
体育spaces = 34
nr.words-1 = 10
SpacesBetweenWords = 3.4

我想要做的是划分单词之间的空格,如下所示:单词之间的
空格:
4 3 3 4 3 3 4 3 3 4
并将它们放在一个列表'SpaceList'中

然后将它们插入单词之间

(cols = 我的块选择或整行)

在我的示例中创建一个包含所有整数 pe 的列表很容易
3 3 3 3 3 3 3 3 3 3(空格 = 30)
,但单词之间仍然有 4 个空格。
我的问题是“如何在单词数之间划分这些空格”?