问题标签 [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.
vim - 你如何从 Vim 中的 'gf' 返回
我正在将 Vim 用于以 Unix 模式安装的 Windows。感谢这个站点,我现在使用gf
命令转到光标下的文件。
我正在寻找一个命令:
- 返回上一个文件(类似于 ctags 的Ctrl+ T),或
- 重新映射
gf
以在新窗口中自动启动新文件。
regex - Vim Markdown 高亮(列表项和代码块冲突)
我决定进一步了解 vim 及其语法高亮。使用其他人的示例,我正在为 Markdown 创建自己的语法文件。我见过mkd.vim也有这个问题。我的问题是在列表项和代码块突出显示之间。
代码块定义:
- 第一行为空白
- 第二行以至少 4 个空格或 1 个制表符开头
- 块以空行结束
例子:
我的代码块的 Vim 语法:
无序列表项定义:
- 第一行为空白
- 第二行以 [-+*] 开头,后跟一个空格
- 列表以空行结束,然后是正常(非列表)行
- 在行项目之间可以添加任意数量的空行
- 通过缩进指定子列表(4 个空格或 1 个制表符)
- 列表项后的一行普通文本作为该列表项的延续包含在内
例子:
我的无序列表项定义的 Vim 语法(我只突出显示[-+*]
):
我无法使用列表的最后两条规则和代码块来突出显示。
这是一个打破我的语法高亮的例子:
我目前无法弄清楚如何让突出显示以我想要的方式工作
忘记添加下面列出的两个规则中使用的“全局”语法规则。这是为了确保它们以空行开头。
另注:我应该更清楚。在我的语法文件中,列表规则出现在块引用规则之前
python - Vim 扩展(通过 Python)?
是否可以通过自定义扩展(最好用 Python 编写)来扩展 vim 功能?
理想情况下,我需要的是在命令模式下的自定义命令。例如
ESC键
:做这个
:去做
vim - 如何在 Vim 中模拟 Emacs 的转置词?
Emacs 有一个有用的transpose-words
命令,它可以让用户将光标前的单词与光标后的单词交换,同时保留标点符号。
例如,'<code>stack |overflow' + Mt = '<code>overflow stack|' ('<code>|' 是光标位置)。
<a>|<p>
变成<p><a|>
.
是否可以在 Vim 中模拟它?我知道我可以使用dwwP
,但它不适用于标点符号。
更新:不,dwwP
真的不是一个解决方案。想象:
Emacs 的 Mt 将交换b
和c
,从而产生(a)(c)(b)
.
有效的是/\w
yiwNviwpnviwgp
。但它破坏""
和"/
。有更清洁的解决方案吗?
更新²:
解决了
不完美,但有效。
感谢 Camflan 让%#
我注意到这个项目。当然,这一切都在wiki上,但我没有意识到它可以解决该功能的精确(Emacs 完全正确)重复的问题transpose-words
。
python - 有没有人为 vim 找到了一套好的 python 插件——特别是模块完成?
我正在寻找一套可以帮助我最终全职切换到 vim 的插件。
现在我使用 Komodo 取得了一些成功,但是他们的 vim 绑定有足够的小错误,我已经厌倦了。
不过,我在 Komodo 中最喜欢的是代码完成。所以,这就是我正在寻找的(按重要性排序)。
- 代码完成,含义:编写完整模块/功能/等的能力。在pythonpath 上的任何模块中,而不仅仅是系统模块。完成时显示文档字符串的奖励积分。
- 跳转到类定义。我猜 CTAGS 会这样做,那么你们是如何管理自动更新标签文件的呢?
- 用于管理缓冲区的项目类型管理:理想情况下,能够使用 grep 查找目录结构中的文件名以打开它。在缓冲区打开时显示类定义索引的奖励。
- Bzr 集成。不是很重要,因为其中大部分我都可以直接放到 shell 中去做。
macos - 如何在 OS X 上升级 *console* 版本的 vim?
我确定这是一个新手问题,但是每次我为 os x 编译/dl'ed 一个新版本的 vim 时,在命令行上运行 vim 都会打开 gvim 应用程序。我只想升级控制台版本(例如,我可以编译 python 以使用omnicomplete)。
vim - Vim 自动生成 ctags
现在我有以下内容.vimrc
:
这样做有几个问题:
- 它很慢 - 为自上次标记生成以来未更改的文件重新生成标记。
- 由于不可避免的“按 Enter 或键入命令继续”,我必须在写入文件后再次按下 Enter 按钮。
当您将这两个问题结合起来时,我最终会过早地按下额外的输入(在ctags -R
完成之前),然后看到烦人的错误消息,并且不得不再次按下输入。
我知道这听起来没什么大不了的,但是根据我在特定日期执行的文件写入量,它往往会变得非常烦人。必须有更好的方法来做到这一点!
vim - 在 Vim 中重置缓冲区
是否可以将 vim 会话中的备用缓冲区重置为以前的缓冲区?
备用缓冲区是指# 所指的缓冲区,即输入cntl-^ 时显示的缓冲区。
假设我打开了两个文件 main.c 和 other.c 并且 :ls 给了我:
假设我打开另一个文件,例如refer.c, :ls 现在会给我:
如果我删除包含 refer.c 的缓冲区, :ls 现在会显示:
但是如果我做一个cntl-^,refer.c会再次显示!
有没有办法让 vim 将备用缓冲区自动重置回上次的状态?备用缓冲区的“历史”?
还是我坚持做 a :2 b 将 other.c 重新加载到备用缓冲区?
或者也许这种行为有充分的理由?
file - 按文件类型更改 Vim 缩进行为
有人可以简单地向我解释根据文件类型更改 Vim 缩进行为的最简单方法吗?例如,如果我打开一个 Python 文件,它应该缩进 2 个空格,但如果我打开一个 Powershell 脚本,它应该使用 4 个空格。