问题标签 [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.
vim - 在宏中退出 exe 模式
我有一个大文件,我试图重新格式化,其中涉及删除每个副本 2 到 100 行的第 2 到第 n 个重复集。
数据看起来像
我想在第一个实例之后删除元素中的重复,所以我当然变得复杂了:)并做了一个类似的宏
在宏中将当前行上的第一个元素拉到寄存器 p 中,然后处理行将第一个元素拉到寄存器o
中,然后执行,仍然在宏中
现在这工作正常,除非它到达部件保持模式@p<>@o
的行,直到我手动转义一次或两次然后执行 命令。:norm! j
:
:norm! j
我用一种更简单的方法解决了这个问题,但想知道为什么它只出现在不会离开 :ex 模式的 else 部分。
vim - 如何从 Vim 中发送转义序列?
所以最近苹果已经支持在终端的状态栏中显示工作目录和文件。必须发送(设置当前文件)的转义序列是这样的:
哪里Pt
是file://
指向当前正在编辑的文件的 url。所以我想我可以让 Vim 将此命令作为转义序列发送,但我遇到了一些麻烦。到目前为止我有这个:
但我有一种感觉,它不会像那样工作。另外,我不知道如何将当前文件作为file://
url 获取,尽管我怀疑 netrw 可能能够帮助我。有任何想法吗?
编辑
到目前为止,我有这个:
但它仍然不起作用 -$HOSTNAME
没有得到扩展。任何人有任何关于如何使其扩展的提示?
编辑 2
好的,所以我对引号和导出的内容进行了一些更改$HOSTNAME
,现在可以正常打印了。但是,vim 并没有像字面地呼应转义序列,而是将它们打印为^[
,这使它们毫无用处!所以我真正的问题来了:你如何让 vim 向 shell 发送文字转义序列?
成功!
最终代码如下:
vim - Vim:在 NERDTreeCWD 和 NERDTreeClose 之间切换的快捷方式
我希望能够使用相同的快捷方式跳转到 NERDTree 中的文件并关闭 NERDTree。我没有使用 VimL 的经验,可以使用一些帮助。
vim - 在 VimScript 中使用寄存器变量
我在 vim 脚本中有以下代码(文件名:文件):
我正在以下文件(文件名:out)上执行此代码:
我正在使用以下运行命令:
输出是:
我不明白为什么在That
and之间打印空格1
。
另外,在编写 vimscript 时,我对如何使用寄存器变量感到有些困惑。有人可以解释一下吗?
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
编辑:现在它已经修复了,这是我目前正在使用的代码。请参阅 Ingor 关于为什么存在该代码的答案
vim - 将文本从一个 vim 缓冲区发送到另一个?
设置:具有多个选项卡、窗口和缓冲区的 Vim 会话。
目标:制作 Ex 命令,将选定文本从活动缓冲区发送到会话中的另一个缓冲区(最好使用自动完成)。我的意思是文本被附加到目标缓冲区的末尾。
示例:假设您在一个名为的缓冲区中apple
,并且在另一个选项卡中命名了另一个缓冲区banana
。您突出显示要发送到的文本banana
(例如,包含文本“asdf”的行,然后键入:'<,'>append ban<TAB>
,vim 将自动完成文本到:append banana
。按回车后,vim 将字符串“asdf”从中剪切并附apple
加到末尾banana
.
我最接近的是:'<,'>!cat >> banana
; 然而,这只适用于香蕉与苹果在同一个工作目录中的情况,并且它无法使用现有的缓冲区名称自动完成。
有没有办法构建一个 vim 脚本/viml 函数来做到这一点?
vim - 定义取决于缩进级别的语法区域
我正在尝试在 Vim 中为 reStructuredText 构建一个更轻的语法文件。首先,当在行尾遇到 "::" 时,文字块开始:
但是,文字块可以在缩进但不是文字的其他结构内:
所以,问题是:如何制作一个检测压痕的区域?我使用以下规则做到了这一点:
它工作得很好,但有一个问题:出现在行中的任何匹配或区域应该由“start”匹配接管语法规则。例子:
它不会使我的规则起作用,因为有一个“链接”规则接管了这种情况。这是因为ms
和me
匹配的参数,但我不能把它们去掉,因为它只会给整条线着色。
有什么帮助吗?
谢谢!
vim - 检查是否在NERDTree
NerdTree 文档说切换最大化(缩放)和最小化 NERDTreeShift-a
是关键。
我将 .vimrc 配置为常规拆分窗格最大化/最小化
因此,基本上要在 vim 中缩放常规窗口,我按下Space -
并缩小,Space +
但是当 NERDTree 打开时,这表现不佳。当 NERDTree 打开并且我Space -
放大时,但当我按下Space +
它时不再缩小,代码窗口和 NERDTree 窗口同样如此。
vim - 如何从vim中的函数返回一个空格?
例子:
如何退回空间?
return ' ' 被视为 return ''
return 'myvalue' 被视为 return 'myvalue'
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 个空格。
我的问题是“如何在单词数之间划分这些空格”?