Vi & Vim

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

7
可以使Vim自动保存文件吗?
一些文字处理程序和文本编辑器会不时自动保存我们正在编辑的文件,这对于从严重的崩溃中幸存下来非常方便。 有没有办法使Vim在特定的时间间隔后自动保存文件?

3
为什么要使用augroup?
我了解自动命令的工作原理以及如何使用它们,但是我有点确定augroup的用途。我读了:help augroup *:aug* *:augroup* :aug[roup] {name} Define the autocmd group name for the following ":autocmd" commands. The name "end" or "END" selects the default group. To avoid confusion, the name should be different from existing {event} names, as this most likely will not do what you intended. 这并不能真正解释它们为什么有用,或者为什么我只想在彼此之间定义一堆自动命令,而不是一个自动命令组名。 例如,如果foo与和自动命令bar相关,我为什么要这样做 augroup …
31 autocmd 

1
向另一个方向扩展视觉选择
有时我选择了带有的视觉选择,例如,Vjjjjj只是后来才意识到我应该从更高的位置开始选择。但是,按k只是减小选择范围的下限,而不是将整个选择向上移动一行。 这是可视化效果(ha,ha),其中粗体线是我选择的线: 不要选择此行 不要选择此行 选择此行! 选择此行! <-我按V这里... 选择此行! 选择此行! 选择此行! 选择此行! <-...并移至此处。但是我应该开始 不要选择此行选择高一行! 不要选择此行 如何通过在另一个方向上移动其起点来扩展视觉选择?如果无法做到这一点,是否有任何方法可以在我的.vimrc文件中添加一个映射使我能够这样做?

7
仅显示匹配的行?
在一个长文件中,我想搜索一个大约匹配200行左右的模式。匹配的行在文件中的随机位置。 当一行匹配时,只有该行本身是相关的,上方或下方均无上下文。 通常,我会使用搜索/和跳过匹配n。 但这意味着一次在屏幕上只有一两个相关的行。 在浏览结果行列表时,是否可以隐藏所有不匹配的行? 蛮力方法是删除所有不匹配的行,并在以后撤消该删除。但这在各种方面都是丑陋的,即使它不会以持久的撤消而结束...
31 search 

5
在不清除寄存器的情况下执行某些操作
通常,在配置文件中,我可能会复制并粘贴一行行,然后我希望对该行进行一些小的更改。粘贴后,我x用来删除要删除的字符,然后继续粘贴下一个块。除了x将已删除的字符放在剪贴板上之外,因此我不得不再次重新复制行块。 有没有一种方法而无需进入插入模式?

5
使用xargs调用Vim后终端出现问题
我有时尝试使用调用Vim xargs,如下所示: find . -name '*.java' | xargs vim ……哪种作品? Vim启动时,我会短暂看到以下警告闪烁: Vim: Warning: Input is not from a terminal 编辑工作— :files正确枚举了所有.java文件,如预期的那样。 我可以保存并退出。 但是,退出Vim后,我的终端很闷: 我在shell提示符下键入的任何内容都不会回显。 回车根本不出现,换行符有时仅出现。 直到我发出reset(1)命令重新初始化终端为止。 这是Vim的错误,还是关于它为何与终端交互的更令人满意的解释?我已经看到它发生在Linux和各种Unices上的7.3版的Vim上(该版本似乎无关紧要)。 我知道一种解决方法,即vim $(find . -name '*.java')。其他解决方法也将受到欢迎,尽管这不是我的主要问题。

1
在IF语句中使用条件运算符AND或OR?
这可能是一个非常简单的问题,但是到目前为止,我还没有找到任何答案(我必须缺少正确的消息来源,而且我不知道在vim帮助下可以找到哪里)。 我有一个条件,我希望它包含“ AND”,例如 if (condition1 .AND. condition2) "do what I want you to do endif 但我找不到语法。“ OR”也一样。
30 vimscript 

5
交换两个窗口的位置
说以下是我的窗口的当前结构: + ----- + ---------------------------- | | | A | | | + ----- + | | | B | A和B的顺序不是很自然。如果B在最上面,那会更好。 但是,如果我走了<C-w>K,B将是所有窗口的最顶端,这不是我想要的。如何将B置于A之上,但不能置于A之上的任何其他窗口之上? 如果将两个窗口垂直拆分,如何将它们更改为水平拆分?

2
Vim可以解释终端颜色换码吗?
许多CLI程序输出突出显示的文本。尽管其中大多数检查输出是否将发送到文件,但其中一些包含终端转义码。我喜欢带有转义代码的输出,但是在Vim中查看这些文件很痛苦。 Vim可以将这些转义码解释为预期的颜色吗?如果不是,可以将Vim设置为忽略这些转义码吗?

4
如何将LaTeX引号视为文本对象?
LaTeX中的引号与普通文本中的引号不同,因为它们是格式化的``like this''(或`like this'单引号)。这使得在Vim中浏览它们变得困难。 我通常使用类似T`ct'(向后退至`,更改至')。但是,这是笨拙且不自然的。我宁愿能够使用的线沿线的东西ciq(“引号中的变化”),就像我所能做的ciw,ca),ci",ca',等。 有什么方法可以告诉Vim ``LaTeX'' `quotes'当作文本对象吗?(此外,还有什么方法只能在编辑.tex文件时触发此操作吗?)

4
在没有焦点的情况下,如何使Vim自动读取文件?
我正在使用VIm做各种事情(在本例中为gVim),包括监视写入文件的输出;我autoread用来使Vim重读该文件,只要将键盘焦点切换到该文件,它就会执行该操作。 即使我不切换键盘焦点,是否可以使Vim更新缓冲区?我尝试设置,checktime但是在键盘焦点不在其他位置时似乎没有任何作用。 我正在监视的输出将完全替换输出文件。而且我没有期待tail -f它。还有其他选择,例如每次都管道到一个新实例中,或管道到less某样东西中,但是如果可以使用VIm完成,那将是很酷的。
29 filesystem 

2
let和set有什么区别?
我不太了解Vim背后的理论。好像我们set有些变量,还有let其他变量。有什么区别,什么时候需要一个? 此外,日晒过的vim色彩设计说明这种情况let g:blabla...的意义是g:什么?
29 vimrc  vimscript 

5
重编号缓冲区列表
在一段时间从事项目工作之后,我开始发现连续的缓冲区号之间存在很大的差距。这是因为出于各种原因擦除了它们之间的缓冲区。不幸的是,这会使键入后跳到特定缓冲区或选择一系列缓冲区变得很尴尬:ls。有什么方法可以从一个开始重新编号所有打开的缓冲区,而不必再次打开所有文件?

2
为什么Y是yy而不是y $的同义词?
是否有特定的历史原因? 背景 -(如果您已经理解了这个问题,则可以跳过此部分。) 作为中级/高级vi用户会知道,y是在“抽出”命令它猛拉(份)由下面的移动命令指定的文本。*因此ye猛拉到字的结束时,y0从光标位置猛拉到行的开始,y_拖动整个当前行,y$从光标位置拖动到当前行的末尾,依此类推。 的d(删除)命令和c(变化)命令都可以与所有这些运动的被使用。 dd是的同义词,d_并删除整个当前行。同样,cc是的同义词c_,并将更改当前行(即它将删除所有文本,并在行的开头将您置于插入模式)。** “ yank”命令遵循此约定;yy会像一样拉动整个当前行y_。 还有另一组同义词:D是的同义词,d$将从光标位置到行尾将其删除。 C是的同义词c$,它将文本从光标位置更改到行尾,使您进入插入模式以键入新文本。 但是,Y是或的另一个同义词,它将使整行yyy_(而不是象从Cand D模式中所期望的那样)从光标移至行的结尾。 我了解在Vim中一直保持这种方式来保持与向后的兼容性vi,如Vim帮助中所述:help Y: 如果您希望“ Y”从光标到行尾(更合逻辑,但不兼容Vi),请使用“:map Y y $”。 因此,这是来自的延期vi。精细。 但是,为什么命令最初是这样设计的?有没有逻辑呢? *具体来说,它将文本放置在寄存器0中,并将未命名的寄存器指向寄存器0。 **尽管这不是有关我的问题,S是另一个同义词cc或c_。

2
如何使Vim能够在同一会话中的Linux系统上同时运行python和python3?
在Linux系统上,打包的Vim通常仅具有python或之一python3。可以同时启用两者(使用python/dyn和python3/dyn),但是在会话期间只能使用一个。邮件列表讨论中说: 这取决于Python库的构建方式。在基于Debian的系统上(出于某种原因,我不会立即记起),它们的构建方式使得必须使用RTLD_GLOBAL来访问符号。这样可以防止在同一进程中同时加载libpython2.x和libpython3.x。 要在同一会话中同时加载两者,可以做些什么? 我可以看到的选项: 重建Python {2,3}软件包,以便RTLD_GLOBAL(无论可能如何)都不需要。 不知何故,可以使库早先加载,然后由Vim卸载(?!)。(有可能吗?) 对于发行版的任何细节,请以增加的特异性顺序进行假设: 基于Debian 的Ubuntu Ubuntu 14.04 或者,如果基于Debian的系统过于复杂,则使用Arch Linux。 请注意,我已经为Vim构建了动态加载支持,因此构建Vim并不是问题。

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.