小编Ste*_*len的帖子

Vim 脚本:是否可以在映射中引用脚本局部变量?

我知道您可以使用脚本本地函数来引用,<SID>但是脚本本地变量呢?我尝试了以下操作,但命中<c-space>失败:

let s:testVar = "foo"
function! s:GetTestVar()
  return s:testVar
endfunction

nnoremap <space> :echo <SID>GetTestVar()<cr>
nnoremap <c-space> :echo <SID>testVar<cr>
Run Code Online (Sandbox Code Playgroud)

您可以通过编写访问器函数(如上所述)来解决这个问题,但有时能够直接引用会很好。

vim gvim vimscript

5
推荐指数
2
解决办法
1663
查看次数

Vim:如何在windows 上使用外部grep 来搜索引号?

出于某种原因,我一生都无法弄清楚在使用 vim 时如何将单引号传递给外部工具。例如,我可能想调用 Vim 的外部 grep 来搜索文本“foo”(即单引号然后是单词 foo)

所以我可能会尝试以下命令:

:grep \"foo *.txt
Run Code Online (Sandbox Code Playgroud)

但这会导致以下错误消息:

!findstr /n \"foo *.txt >C:\Users\[username]\AppData\Local\Temp\VIeC244.tmp 2>&1
shell returned 1
E40: Can't open errorfile C:\Users\[username]\AppData\Local\Temp\VIeC244.tmp
Run Code Online (Sandbox Code Playgroud)

请注意,grep 已更改为使用 'findstr /n',因为我在 Windows 上(并且可以通过运行来验证echo &grepprg)。我发现如果我自己从命令行输入以下内容,我可以轻松地执行我想要的搜索:

findstr /n \"foo *.txt
Run Code Online (Sandbox Code Playgroud)

这完全符合我的预期

vim grep findstr

5
推荐指数
1
解决办法
1076
查看次数

Vim:使用relativenumber 移动并将其添加到跳转列表中以与 CTRL-O 一起使用

我启用了相对编号,并且经常通过按 25k 或 7j 等导航到特定行。问题是,在更改行后,我经常发现自己想要返回到移动之前的位置。因此,我按 CTRL-O 但失败,因为 j/k 移动未添加到移动历史记录中。相反,我似乎向后退了两次。

理想的情况是,每当我使用乘数执行 aj/k 操作时,Vim 都会将其添加到移动历史记录中。这样的事情可能吗?

vim gvim

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

VIM:移动到下一个句子/段落而不添加到导航历史记录

我喜欢使用 CTRL-O 和 CTRL-I 键来移动。问题是它很快就会被小动作填满,比如用 }/{ 逐段移动或用 )/( 逐句移动。有没有办法让这些键不影响导航历史?

vim gvim

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

标签 统计

vim ×4

gvim ×3

findstr ×1

grep ×1

vimscript ×1