问题标签 [vim]

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 投票
11 回答
60882 浏览

vim - 你如何从 Vim 中的 'gf' 返回

我正在将 Vim 用于以 Unix 模式安装的 Windows。感谢这个站点,我现在使用gf命令转到光标下的文件。

我正在寻找一个命令:

  1. 返回上一个文件(类似于 ctags 的Ctrl+ T),或
  2. 重新映射gf 以在新窗口中自动启动新文件。
0 投票
7 回答
1931 浏览

search - 如何从 Vim 搜索列表跳转到某个事件

在 Vim 编辑器中,我选择]I了一个函数(在 C++ 代码中)。这显示了一个列表,上面写着'Press ENTER or type command to continue'

现在要跳转到一个事件,比如 6,我输入6- 但这不起作用。

在这种情况下我可以输入什么命令,我如何从这个列表中跳转到第 N 次出现?

更新:

实际上我试过:N(例如 :6)——但是当我输入:Vim 的那一刻进入了插入模式,冒号被插入到代码中。

更新

假设:N方法是正确的,仍然完全卸载和安装 Vim,没有任何配置,也没有帮助 - 尽管现在输入:不会将 Vim 切换到插入模式。

0 投票
3 回答
3407 浏览

regex - Vim Markdown 高亮(列表项和代码块冲突)

我决定进一步了解 vim 及其语法高亮。使用其他人的示例,我正在为 Markdown 创建自己的语法文件。我见过mkd.vim也有这个问题。我的问题是在列表项和代码块突出显示之间。

代码块定义

  • 第一行为空白
  • 第二行以至少 4 个空格或 1 个制表符开头
  • 块以空行结束

例子:

我的代码块的 Vim 语法:

无序列表项定义

  • 第一行为空白
  • 第二行以 [-+*] 开头,后跟一个空格
  • 列表以空行结束,然后是正常(非列表)行
  • 在行项目之间可以添加任意数量的空行
  • 通过缩进指定子列表(4 个空格或 1 个制表符)
  • 列表项后的一行普通文本作为该列表项的延续包含在内

例子:

我的无序列表项定义的 Vim 语法(我只突出显示[-+*]):

我无法使用列表的最后两条规则和代码块来突出显示。

这是一个打破我的语法高亮的例子:

我目前无法弄清楚如何让突出显示以我想要的方式工作


忘记添加下面列出的两个规则中使用的“全局”语法规则。这是为了确保它们以空行开头。


另注:我应该更清楚。在我的语法文件中,列表规则出现在块引用规则之前


0 投票
3 回答
8167 浏览

python - Vim 扩展(通过 Python)?

是否可以通过自定义扩展(最好用 Python 编写)来扩展 vim 功能?

理想情况下,我需要的是在命令模式下的自定义命令。例如

ESC键

:做这个

:去做

0 投票
6 回答
3376 浏览

vim - 如何在 Vim 中模拟 Emacs 的转置词?

Emacs 有一个有用的transpose-words命令,它可以让用户将光标前的单词与光标后的单词交换,同时保留标点符号。

例如,'<code>stack |overflow' + Mt = '<code>overflow stack|' ('<code>|' 是光标位置)。

<a>|<p>变成<p><a|>.

是否可以在 Vim 中模拟它?我知道我可以使用dwwP,但它不适用于标点符号。

更新:不,dwwP真的不是一个解决方案。想象:

Emacs 的 Mt 将交换bc,从而产生(a)(c)(b).

有效的是/\w yiwNviwpnviwgp。但它破坏"""/。有更清洁的解决方案吗?

更新²:

解决了

不完美,但有效。

感谢 Camflan 让%#我注意到这个项目。当然,这一切都在wiki上,但我没有意识到它可以解决该功能的精确(Emacs 完全正确)重复的问题transpose-words

0 投票
9 回答
8874 浏览

python - 有没有人为 vim 找到了一套好的 python 插件——特别是模块完成?

我正在寻找一套可以帮助我最终全职切换到 vim 的插件。

现在我使用 Komodo 取得了一些成功,但是他们的 vim 绑定有足够的小错误,我已经厌倦了。

不过,我在 Komodo 中最喜欢的是代码完成。所以,这就是我正在寻找的(按重要性排序)。

  • 代码完成,含义:编写完整模块/功能/等的能力。在pythonpath 上的任何模块中,而不仅仅是系统模块。完成时显示文档字符串的奖励积分。
  • 跳转到类定义。我猜 CTAGS 会这样做,那么你们是如何管理自动更新标签文件的呢?
  • 用于管理缓冲区的项目类型管理:理想情况下,能够使用 grep 查找目录结构中的文件名以打开它。在缓冲区打开时显示类定义索引的奖励。
  • Bzr 集成。不是很重要,因为其中大部分我都可以直接放到 shell 中去做。
0 投票
5 回答
2122 浏览

macos - 如何在 OS X 上升级 *console* 版本的 vim?

我确定这是一个新手问题,但是每次我为 os x 编译/dl'ed 一个新版本的 vim 时,在命令行上运行 vim 都会打开 gvim 应用程序。我只想升级控制台版本(例如,我可以编译 python 以使用omnicomplete)。

0 投票
12 回答
34030 浏览

vim - Vim 自动生成 ctags

现在我有以下内容.vimrc

这样做有几个问题:

  1. 它很慢 - 为自上次标记生成以来未更改的文件重新生成标记。
  2. 由于不可避免的“按 Enter 或键入命令继续”,我必须在写入文件后再次按下 Enter 按钮。

当您将这两个问题结合起来时,我最终会过早地按下额外的输入(在ctags -R完成之前),然后看到烦人的错误消息,并且不得不再次按下输入。

我知道这听起来没什么大不了的,但是根据我在特定日期执行的文件写入量,它往往会变得非常烦人。必须有更好的方法来做到这一点!

0 投票
2 回答
1777 浏览

vim - 在 Vim 中重置缓冲区

是否可以将 vim 会话中的备用缓冲区重置为以前的缓冲区?

备用缓冲区是指# 所指的缓冲区,即输入cntl-^ 时显示的缓冲区。

假设我打开了两个文件 main.c 和 other.c 并且 :ls 给了我:

假设我打开另一个文件,例如refer.c, :ls 现在会给我:

如果我删除包含 refer.c 的缓冲区, :ls 现在会显示:

但是如果我做一个cntl-^,refer.c会再次显示!

有没有办法让 vim 将备用缓冲区自动重置回上次的状态?备用缓冲区的“历史”?

还是我坚持做 a :2 b 将 other.c 重新加载到备用缓冲区?

或者也许这种行为有充分的理由?

0 投票
11 回答
209077 浏览

file - 按文件类型更改 Vim 缩进行为

有人可以简单地向我解释根据文件类型更改 Vim 缩进行为的最简单方法吗?例如,如果我打开一个 Python 文件,它应该缩进 2 个空格,但如果我打开一个 Powershell 脚本,它应该使用 4 个空格。