Vi & Vim

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

2
在不带花括号的语言中使用%
在C和类似C的语言中,我可以%用来跳到光标所在的相应花括号。这是一个众所周知的“把戏”。 但是以Ruby为例: def fun [1, 2].each do |n| end end 这不起作用,因为ruby不使用中的字符matchpairs((:),{:},[:],<:>默认设置为。 我尝试设置它,但是不起作用: :set matchpairs=def:end E474: Invalid argument: matchpairs=def:end 我可以将其与Ruby之类的语言一起使用吗?请注意,这不是特定于Ruby的问题,其他示例可能是shell脚本(if/ fi)或Lua(function/ end),等等。

2
ale linter + eslint:跳至下一个错误
我使用eslintwith ale来整理我的Javascript代码。编辑代码块后,我经常会遇到一些错误要修复。通过导航到下一条错误的线,从标尺中读取问题并进行修复来完成修复。 如果我可以跳过导航阶段,并使用特定的键绑定导航到下一个错误的位置(其行以及希望的列),那就太好了。 有没有一种方法可以使用键绑定导航到下一个皮棉/棉布错误?


2
set和:set有什么区别?
我在看Tim Pope的vim敏感插件,并在自述文件中注意到了这一点。 有关功能的权威列表,请参见源。(不用担心,主要是:set电话。) 当我查看来源时,:set呼叫就像这样... set autoindent 有没有:前set。 我很确定我也确实:set在example实例中见过.vimrc。 有什么区别? 我应该使用哪种形式.vimrc?
17 vimscript  vimrc 

6
如何使Vim显示C / C ++函数的文档?
大多数编辑器都有一个功能,例如当您通过将尖号放在函数上来按下某些键时,它会弹出该函数的文档以及该函数采用的参数的数量和类型。 我想知道Vim是否提供这种支持。例如,在用C进行编码时,我使用了内置函数qsort()。由于我不确定所用参数的类型和数量,因此我想在不逃脱Vim的情况下知道它。可能吗?

1
为什么在此自定义命令上出现“ E488:尾随字符”错误?
我有一个~/.vimrc包含以下内容: function! NewFile() let filename = input("Filename:") endfunction command NewFile :call NewFile()<cr> (当然,我的实际.vimrc情况更复杂,但是我已经重新创建了这个没有插件等的小型测试用例。) 我的意图是编写一个支持根据模板创建新文件的功能。vi用户将询问一些输入项,例如文件名。 该功能还不那么复杂(轻描淡写!)-它所做的只是索要文件名。当我NewFile从vi命令行使用该命令时,它将启动,但是一旦我输入文件名并按Enter,就会收到错误消息: E488: Trailing characters 这是为什么?我究竟做错了什么?

3
用于缩进的选项卡,用于对齐的空格
我正在尝试使vim与选项卡一起自动缩进,并与空格对齐,但实际上,vim与选项卡一起缩进,并用选项卡+空格填充对齐。 Vim做到了: (每个块是一个选项卡) { >--long a = 1, >-->--..b = 2, >-->--..c = 3; } 可以做到: { >--long a = 1, >--.....b = 2, >--.....c = 3; } 因此,我认为关于制表符和空格的问题很多,但没有一个提供某些Just Works解决方案: /programming/8493705/vim-use-tabs-for-indentation-spaces-for-alignment-with-c-source-files /programming/29208431/vim-indent-with-tabs-align-with-spaces /programming/6504507/vim-indenting-and-alignment-combining-spaces-and-tabs 实际上我正在使用: set ai set cindent set cinoptions=(0,:0,u0,U0,g0) 我尝试了Smart Tab插件,该插件似乎运行良好,但是当我尝试时gg=G出现一些奇怪的错误: Error detected while processing function CtabRedoIndent..<SNR>12_CheckAlign: line 11: …

1
我怎么知道我的vim的补丁版本?
我已经安装了vim 7.4,但是我不确定安装它时的补丁程序级别。我该如何检查? vim --version 给 VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Oct 15 2014 16:18:44) .... 但是它没有提供补丁程序级别或次要版本号。
17 version 

5
如何将光标移动到当前行的中心?
有什么方法可以将光标移动到当前行的中间吗?(文本行的中间-不在屏幕宽度的中间) 我想知道是否有类似于M将光标移动到屏幕中间的快捷方式。 编辑:在括号内添加了说明


3
我可以在Vim窗口中发布交互式shell吗?
我知道我可以:!或:r!执行外部命令和可选插入其输出为文本。我什:!sh至可以执行,并且会生成一个可以生存的外壳,直到退出该外壳为止-但是在外壳处于活动状态时,Vim处于“睡眠状态”且无法访问。如果我想回到Vim片刻,我必须退出shell,并生成一个新的shell,这不是很有用。 我可以在另一端访问外壳,用暂停的Vim ^Z和管理通过Vim的工作bg,fg和jobs。这更有意义,但从长远来看非常麻烦。我可以使用Screen它是否可用(它通常不可用),或者打开我的窗口管理器的几个窗口(然后按ssh依次从每个窗口中定位主机,以使vim和shell都位于远程主机上,这又很麻烦。) 如果Vim允许我打开一个shell会话并将其保存在其(内部)窗口之一中,或者让我切换回它,那将是最愚蠢的。这样的事情可能吗?


1
为什么“操作员” +“动作”的行为不一致?
这是困扰我很长时间的事情,但是我从来没有四处询问。说缓冲区中的文本如下所示: Hello World 如果将光标放在第2行的某个位置,然后执行do yk,则光标将在第1行结束。这似乎暗示着一个操作符加上一个动作也会移动光标。但是,如果我从第1行开始并执行yj,则光标会停留在同一位置。许多密钥也会发生相同的不一致。 Moves Doesn't move gg G h l { } ( ) T t F f ? / 那么这种行为是什么呢?这是预期的并且有据可查吗?有这个名字吗?可以覆盖吗? 通常,似乎“向后移动,不向前移动”,但是有没有办法确定操作员+动作是否会移动光标?



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.