小编Stu*_*ick的帖子

为什么 **/* 用于在 :vimgrep vim 命令中递归搜索当前目录?

为什么他们使用双星号?

我读过Vim的帮助上vimgrep,我看了看周围的堆栈溢出和vimcasts并同时我发现很多人说这是怎么你在当前目录中递归搜索,我还没有找到一个解释,为什么

让我们用一个例子来更容易解释。如果我想在当前目录下查找所有出现的 foo,我可以使用

:vim[grep][!] /{pattern}/[g][j] {file}
Run Code Online (Sandbox Code Playgroud)

这样就变成

:vimgrep /foo/ **/*
Run Code Online (Sandbox Code Playgroud)

所以看看{file}这个grep的部分:

  • 我知道这是一个文件路径。
  • 我知道星号 ( *) 是通配符。
  • 我知道正斜杠充当目录分隔符。

我的具体问题是为什么它以

**/*

并不是

*/*

我已经尝试在几种不同的情况下使用/进行搜索,这似乎是在距我当前目录正好 1 深的任何目录中搜索任何文件,我认为这就是使用双星号的原因。

即为什么它是一个双星号?这是否通过一些我不完全理解的巧妙机制表示“我希望您递归搜索”,或者这只是一个用于表示“递归搜索”的关键字?我是否完全关闭,这不是 vim 的内置部分,而是外壳的一部分?(这些部分不是我的实际问题,而是有助于理解我的困惑,我的实际问题在上面)。

如果有什么方法可以改进我的问题,请告诉我,这是我第一次提问。

regex vim glob vimgrep

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

为什么在单词内部更改案例时会改变行为?

我正在将一些单词改为大写,我点击viw~将单词的大小写从小写改为大写.我向前移动了一个单词并点击.以重复对下一个单词的操作,我注意到它影响了前面单词的一些字母的情况,而在其他时候它不会改变整个单词的大小写.

这是一个vim -u NONE带有单个句子的文件的例子

这是一个测试句

用我的光标在句子的开头,我viw~ 现在点击 我的句子:

这是一个示例测试句子

我向前移动1个单词w并点击.重复动作.我的句子现在是:

这是一个示例测试句子

w.

这是一个例子测试句子

w.

这是一个eXAMple测试句

w.

这是一个eXAMple TEST句子

当我将操作捕获为宏而不是使用时,会发生相同的行为 .

我怀疑vim只是改变了与第一个单词相同数量的字母的情况,但为什么呢?为什么viw不在宏中工作?

vim

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

当我在vim中搜索然后按“ esc”时,光标返回到上一个位置

我的vim安装似乎发生了某些事情,但我不确定是什么。我是vim的长期用户(尽管我不将其用作主编辑器)。

当我搜索时:

/foo
Run Code Online (Sandbox Code Playgroud)

我想编辑找到的位置,所以按ESC(准备进入插入模式)。vim现在跳回到我从文件开始的位置。例如,如果我在3000行文件的第0行中,我搜索一个特定的字符串,在第1700行中找到它,然后想要对其进行编辑-ESC将我带回到第0行。

这是怎么回事?我是否意外设置了一些奇怪的模式?还是忘记了我应该知道的热键组合?

vim

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

如何恢复Vim的变化?

我正在使用Vim在服务器中编辑代码.我按Jj很多次,因为CapsLock已启用.如何恢复Js 所做的更改?按下u说它是最古老的变化.

vi vim

0
推荐指数
1
解决办法
218
查看次数

标签 统计

vim ×4

glob ×1

regex ×1

vi ×1

vimgrep ×1