Vi & Vim

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

8
快速计算一列数字的总数
我正在写一个降价表,看起来像这样: | 13/05/15 | 09:30-16:00 | 6.5 | | 14/05/15 | 10:00-16:30 | 6.5 | | 16/05/15 | 15:30-01:00 | 9.5 | | 21/05/15 | 09:00-16:30 | 7.5 | | 22/05/15 | 08:30-17:00 | 8.5 | | 28/05/15 | 09:30-15:30 | 6 | | 02/06/15 | 09:00-20:00 | 11 | …

3
黑洞寄存器(“ _”)的用途是什么?
我最近阅读了有关黑洞寄存器的信息"_,该寄存器是只写寄存器。 Vim文档以这种方式描述它: 黑洞寄存器“ _ 写入该寄存器时,没有任何反应。这可用于删除文本,而不会影响普通寄存器。从该寄存器读取时,不返回任何内容。 在我读过的所有文章和书中,作者始终使用相同的示例,即当我们需要删除一些文本而不删除以前要删除的内容时使用该寄存器。 我了解这种用法​​,但令我惊讶的是,我找不到该寄存器的其他用例,这使我想到两个问题: 该寄存器在其他一些用例中有用吗?如果是,哪个? 如果要在我之前引用的用例中使用该寄存器的唯一目的,为什么Vim的创建者决定使用这种寄存器来解决此问题?我的意思是,此答案显示了针对此问题的解决方案,该问题意味着与使用相比,击键次数更少"_。使用"0还可以避免使用黑洞寄存器,为什么他们要创建它呢?

4
有没有一种方法可以可靠地在文件历史记录中往返
我想转到我刚刚编辑的文件,然后再编辑类似MRU插件的文件。 :bnext并且:bprev有时可以正常运行,但大多数情况下,我只会遇到一些晦涩的文件,我不记得编辑该文件了,而被迫退回到MRU插件。 有办法解决吗? Ctrl-^在最后两个文件之间交换。在更多内容之间导航的最佳方法是什么? 我知道这可能很棘手,但我同意任何可以改善当前:bn :bp行为的方法。我经常看到的缓冲区完全不合适。也许有一个插件可以跟踪最近的文件并提供挂钩,以便我可以创建映射? 回复评论使我的想法有些清醒。我相信我想要的是能够按最新保存顺序浏览文件。这样,如果我回溯历史,顺序将不会改变,直到我保存文件,然后保存到最后一个文件,然后向后一步“返回”到之前保存的文件,即我开始的那一步。 诸如Ctrl-O Ctrl-Ipair之类的东西,可以立即切换文件而不会在当前缓冲区中跳转。u与Unetrw 类似: u Change to recently-visited directory |netrw-u| U Change to subsequently-visited directory |netrw-U|
15 buffers 



2
如果文件未更改,请勿在写入时触摸文件
有时:w,我在阅读某些内容时会心不在type地打字。这会导致文件的修改时间发生更改,有时会导致我的构建系统不必要地重建项目的大部分内容。 如果我尝试写入文件并且未更改,是否可以将vim设置为不执行任何操作?
15 save 

4
如何从标准输入中编辑内容?
我想在vim中编辑从命令行动态生成的内容,而没有文件。 例如: $ echo This is example. | vim /dev/stdin $ cat /etc/hosts | vim /dev/stdin 但是失败并显示以下错误: Vim:警告:输入不是来自终端 Vim:读取输入错误,正在退出... 有可能实现吗?

2
如何从拆分模式退出vim?
在分割模式下一次编辑多个文件时,如何有效退出vim? 看来,当我有10个拆分窗口时,我必须:q!为每个窗口重复执行10次命令,这非常耗时。 有没有更好的退出编辑器的方法? 至于肮脏的解决方法,可以通过按Control+ Z并键入kill %1将其杀死来退出。
15 split  quit 

4
如何使gvim在Windows中最大化启动?
我想让我的编辑给我尽可能多的屏幕空间,因为这增加了我一次查看大多数代码的能力。 问题是,gvim似乎给了我一个80x25的窗口,或者让我记住了上一个非最大化的大小,具体取决于我如何调用它。 因此,无论记忆状态如何,我如何强制其尽可能大?

2
是什么使Vundle插件兼容,并且其他插件管理器可以互换?
很长一段时间以来,我一直在使用Vundle来管理我的vim插件。最好的办法是,我基本上只是将插件组织在一个隔离的目录结构中,并跟踪针对源URL进行更新的情况,这些URL通常在插件目录中手动并排排列。 我遇到过多个在多个插件管理器下使用相同插件的参考。例如NeoBundle似乎使用相同的插件。但是,似乎还有许多其他插件管理器。在使用相同的源文件的意义上,所有这些工具是否兼容?或者是否必须专门准备插件才能与每个管理器兼容?用另一种方式问,哪些其他插件管理器可以互换,足以处理我当前的Vundle插件,和/或即使他们在其他管理器中做广告,我也可以假定哪些插件格式可以管理Vundle?

2
Tmux正在更改Vim中的部分背景
这似乎仅在tmux内部使用vim时发生。我也在使用iTerm 2。 如果我创建一个新的tmux窗格或调整tmux窗格的大小,它将立即如下所示: 然后解决此问题的唯一方法是在vim中滚动,回到原来的样子: 是什么原因造成的?
15 terminal  tmux 

3
如何自动缩进新行?
我从事缩进程度不同的项目。在许多这样的项目中,由于文件的典型结构,大多数行至少缩进了两个级别(例如Java文件中的方法)。 这意味着在一行上时创建新行 public void something () { 将我的光标移到下一行,自动缩进,例如 public void something () { [cursor] 虽然我可以在新行中按几次Tab键以使其对齐,但是有没有更好的方法(可能自动执行)?
15 indentation  ide 


2
用当前行号替换模式
我想用当前行号替换此文件中的“ x”。也就是说,改变 x x x 至 1 2 3 现在,我使用Perl一线式: perl -pi -e '$x=$.; s/x/$x/' myfile.txt 我认为UltraEdit可以通过垂直选择和替换来实现。可以在vim中完成吗?(我的示例在这里假设'x'在一行中全部存在。但是实际文件中的行要复杂得多。)


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.