Vi & Vim

使用vi和Vim系列文本编辑器的人员的问答

1
保存刚刚在vimrc中创建的宏
有时我创建宏。有时我会多次创建相同的宏。 有时候,我厌倦了重新创建相同的宏。我可以存储宏吗?我可以加载宏的预设吗?我可以制作一个宏并将其永久保存吗?
14 macro 

3
即使使用q也不能退出Vim!
即使输入,也无法退出vim :q!。我得到错误 E37: No write since last change (add ! to override) E162: No write since last change for buffer... 我认为缓冲区是NetrwTreeListing只读的。
14 netrw  quit 

2
如何使vim下载拼写文件?
spelllang首次设置时,系统提示我自动下载适当的拼写文件。由于指令不明确,我以某种方式中止了该过程,当它询问我应将其进入哪个目录时。 现在,当我:set spelllang说Warning: Cannot find word list...时,它不提供下载。 如何重新启动该过程?

4
增量时粘贴和粘贴
我正在Vim中编辑.sql文件: INSERT INTO apps_forms (app_id, form_id) VALUES (1, 1), 我想做的是拉线(1, 1),并将其粘贴137次。但是,我希望括号中的第二个数字每次都增加。输出如下: INSERT INTO apps_forms (app_id, form_id) VALUES (1, 1), (1, 2), (1, 3), ... (1, 137), 有没有办法在Vim中做到这一点,如果可以,我将使用什么命令? 谢谢!

3
如何跳转到函数调用?
用生成一个标记文件后,exuberant-ctags我可以从函数调用跳转到其声明,<C-]>这非常方便。 我的问题是如何以其他方式做到这一点?当我的光标位于函数的定义上时,如何转到调用该函数的行? 当我查看由ctags生成的文件时,我只会看到与定义位置有关的信息,而与调用无关的信息,是否意味着我不能做到这一点,Vim是一个聪明的解决方法,或者我需要使用某些东西除了exuberant-ctags?
14 ctags 

2
将listchars选项卡显示为空格
我使用list和listchars来显示我的空格,但是我坚持使用的代码样式使用制表符。查看>或^I查看我所有的标签都很令人恶心。 如何保留所有现有列表字符但带有空白制表符?

2
如何从Markdown注释或嵌入式注释生成Vim文档,或者有更好的方法添加文档?
这是一种在一两个问题。最近,我花了很多时间来深入学习vimscript,学习vim的内部知识,并开始编写vim插件。在此过程中,我一直在单独的markdown文件中保留大量注释,并在vimscript文件中添加许多内联“文档”注释。 我觉得我终于有了一些值得共享的代码,并且想要开始添加一些实际文档。我尚未编写任何自己的帮助文档文件,因此我仍在弄清楚该过程。 在没有任何经验或对该工作流程没有扎实的了解的情况下,我正在尝试完成两个任务: 从vim / vimscript上的markdown'notes'文件生成帮助文档,因此我可以随时轻松地从vim中快速读取/引用。 从我的vimscript文件中解析内联文档(类似于shocco用于shell脚本的方式)以生成与该vimscript相关的帮助文档。 关于想法的任何建议或建议(这是一个坏主意,因为...,更好的主意是...),或如何实现它们。

4
将现有窗口移至现有选项卡
有时我需要将窗口移到一个已经存在的选项卡中,并且我想知道是否存在可以执行此操作的命令/键盘快捷方式。我知道我可以关闭窗口,切换到选项卡,然后在新的拆分中打开它,但是我想知道是否有更短的方法来完成此操作。请注意,我想将其移动到现有标签页,而不是像新标签页一样<C-w>T。

2
cpo&vim是一种特殊的语法吗?
在脚本中,习惯执行以下操作: let s:save_cpo = &cpo set cpo&vim ... script ... let &cpo = s:save_cpo 确保脚本的不兼容模式。 是: set cpo&vim 某种特殊的语法,例如foo & bar?还是更像是命令,触发行或其他?
14 vimscript 

2
什么时候使用after /目录?
我了解这是放置最终决定权且不会被其他消息覆盖的地方,但是我不清楚如何决定何时放置(例如)~/.vim/after/ftplugin/而不是~/.vim/ftplugin/。 人们通常会使用~/.vim/ftplugin/并仅~/.vim/after/ftplugin/在观察到不良行为的情况下才将其放入其中,还是只是将其全部放入后目录中?
14 options 

4
如何用递增计数器替换每个匹配项?
我想用十进制数搜索并替换每次出现的某种特定模式,该十进制数1以每一个匹配项开始并以1递增。 我可以找到措辞类似的问题,这些问题原来不是关于增加计数器,而是将每个匹配项修改为固定的数量。其他类似的问题是关于插入行号而不是递增计数器。 之前的示例: #1 #1.25 #1.5 #2 后: #1 #2 #3 #4 我的真实数据中有很多要重新编号的文字。
14 substitute 

1
什么是Vim插件?
我了解我们可以扩展Vim的功能,以便添加新功能或修改现有功能并增强我们的编辑体验。 尽管自己长期以来都是Vim用户,但我现在仍处于未知领域:什么是Vim插件?编写插件的先决条件是什么,以便我可以在不久的将来编写自己的插件?

2
“ set”命令仅影响活动缓冲区吗?
我在vim中有两个缓冲区: :ls 1 %a ".vimrc" line 1 2 #h "script.sh" line 1 Press ENTER or type command to continue 如上所示,我在第一个缓冲区。现在,如果我执行该:set softtabstop=16命令,那么我希望它会影响两个缓冲区。但是,情况并非如此-虽然sts第一个缓冲区的值确实已更改,并且Tab键插入了四个制表符(ts=4),但对于第二个缓冲区,该sts值仍为4: :ls 1 #h + ".vimrc" line 1 2 %a + "script.sh" line 1 softtabstop=4 Press ENTER or type command to continue 为什么会这样?我认为这set会影响所有缓冲区,而setlocal只会影响活动缓冲区。
14 set  setlocal 

2
如何部分替换所选文本块中的文本?
为我的问题找到一个好标题并不容易。 我知道要在文本块前面插入: Ctrl- v 选择行 I 键入文本 ESC 现在,我想这样做,但也可以替换块选择中的一部分。目前我正在做两次手术 Ctrl- v 选择块 x 返回开始 接下来是我上面提到的顺序。 是否可以通过仅选择一次(Ctrl- v)块来组合这两个操作? 这是一个小例子: 我想转换以下块 1 text 2 text 3 text 4 text 5 text 进入 new text new text new text new text new text 只做一次“手术”。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.