Vi & Vim

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

3
公开课第3节
我正在使用Vim在Linux上开发C。当我按下K以打开基本单词的手册页时,我无法控制要打开哪个手册节。有没有办法在某个地方指定它?

1
每个窗口/缓冲区的搜索模式不同
是否有可能每个窗口或缓冲区具有不同的搜索模式,即 我想在窗口/缓冲区A中搜索术语A,在窗口/缓冲区B中搜索术语B,以便使用hlsearch突出显示并行拆分中的不同内容。
10 search  buffers 

6
删除n行跳过1行脚本
我想创建一个基本的Vim脚本,该脚本仅删除n行,跳过1行并重复直到文档末尾。我不在乎特定的匹配项,我只想删除该行。例如; 因此,我想对3ddj整个文档重复该命令。 Text I want to keep. Text I want to delete. Text I want to delete. Text I want to delete. Text I want to keep. Text I want to delete. Text I want to delete. Text I want to delete. Text I want to keep. Text I want …

2
如何列出插件的可用选项?
我最近发现YouCompleteMe有一个 g:ycm_autoclose_preview_window_after_insertion选项可以在退出插入模式后自动隐藏文档预览窗口,而且我最近也开始使用vim,因此这是我第一次设置选项。 所以我想知道我在vim环境中编写的其他插件是否有可用的选项,而无需手动搜索。 它们是在vim启动时在全局注册的,以使列出它们的命令可用,还是无法完成?
10 options 

2
如何从另一行开始粘贴可视块
我花了很长时间才意识到,用放置(粘贴)某物p或用P可视块选择某物并用ctrl+v拖动(复制)该东西可以y保留以前的方式,因此,当复制的文本位于行的中间时,然后将尽可能在其他文本中间复制。相反,select-line with V不会将复制的行粘贴到其他文本中,而是从另一行开始。 例如,假设我现在有: 12/12: Avocado. Apple. 12/13: Bean. Banana. 12/14: Cherry. Citron. 12/15: 12/16: 12/17: 当我想剪切Avocado和Bean和时Cherry,通过选择(选择表示为_) 12/12: ________ Apple. 12/13: ________ Banana. 12/14: ________ Citron. 12/15: 12/16: 12/17: 并按y,然后将光标移动到下一行(以表示的光标_), 12/12: Avocado. Apple. 12/13: Bean. Banana. 12/14: Cherry. Citron. _2/15: 12/16: 12/17: 然后按P。结果: 12/12: Avocado. Apple. 12/13: Bean. Banana. 12/14: …

4
将命令序列捆绑在一起以重复(。)
考虑: apple pear 将光标放在第一行上,键入Yp,生成: apple apple pear 将光标放在pear行上,然后键入.以重复上一个命令。这仅重复p(而不是组合Yp),产生: apple apple pear apple 我想知道一种方法来.重复最后N条命令。喜欢的东西2.重复组合Yp,以产生: apple apple pear pear Ofc无效-重复p两次。但是这个想法是“重复最后两个命令的顺序 ”。 我知道我可以- q记录命令序列并使用来重复它们@@,但是这种解决方案并不理想,因为它需要您一直在进行规划,而实际上,您通常并不知道需要重复一些操作直到之后你已经做到了。 有什么方法可以实现我想要的吗? 安慰奖:如果以上都不可行,是否有办法重复上一次的宏播放?例如,如果我键入@@要播放的最后一个宏,我希望随后的内容.等同于@@再次键入-而不是再次键入(例如,如果的结果@@取决于您所在的行)


1
排序一列而不更改其他列
我最近意识到过滤!技术,我很喜欢它。不幸的是,我无法在可视块模式下使用它。希望这里的专家能帮助我。 基本上,我想对列进行排序,例如下面的第三列(仅是MWE)。而且我不想在排序时打扰其他列。 我尝试!通过sort实用程序过滤()可视(块模式)选择的第三列。但是排序实际上超出了选择范围,也就是说,所有行都被交换,而不仅仅是选择范围,这也是基于第一列的! 1. LARGEST 40 2. SECOND-LARGEST 168 3. MID 2.8 4. MID 540 5. MID 14.84 6. MID 40 7. SECOND-LEAST 64 8. LEAST 8 我使用可视块选择了最后一列,并说!sort --reverse显示为 '<,'>!sort --reverse 结果与我的预期相反。结果将对整个行进行排序/交换,而不仅仅是一行,而且也基于第一列,无论我选择的是第三列! 8. LEAST 8 7. SECOND-LEAST 64 6. MID 40 5. MID 14.84 4. MID 540 3. MID 2.8 …

6
如何更改jedi-vim使用的python解释器
我已经Anaconda(包括python3.5.2),VIM(7.4)并Jedi-VIM安装在我的系统上。python默认情况下,Linux系统上还安装了一个。 自动补全至少在基本软件包上起作用。但是对于像这样的软件包numpy(包含在中Anaconda),无法完成。 在中使用以下命令VIM: :py3 import sys; print(sys.path) ['/usr/lib/python35.zip', '/usr/lib/python3.5', '/usr/lib/python3.5/plat-x86_64-linux-gnu', '/usr/lib/python3.5/lib-dynload', '/usr/local/lib/python3.5/dist-packages', '/usr/lib/python3/dist-packages', '_vim_path_'] 这向我表明,Anaconda-python从未使用过解释器和软件包jedi-vim。 $which python /home/user1/anaconda3/bin/python 我怎样才能让jedi-vim也使用anaconda python的路径来获取包自动完成功能?

1
可视块插入新行
我使用可视块模式进行了大量工作,这对于跨很多行进​​行快速更改非常有用。 但是我正在努力做的事情是像这样插入换行符: 选择记为[]: Some [t]ext Some [t]ext Some [t]ext Some [t]ext Some [t]ext 我按,I然后可以在之前添加一些文本t: Some other text Some [t]ext Some [t]ext Some [t]ext Some [t]ext 当我按时,<Esc>我得到以下信息: Some other text Some other text Some other text Some other text Some other text 但是现在,如果我按<CR>而不是要添加的文本,则按需插入换行符,但不插入其他行。结果如下: Some text Some text Some text Some text …

1
如何在选择时突出显示matchit.vim定义的匹配“%”名称(例如if / end,for / end)?
目前,我的Vim用青色背景和白色前景突出显示匹配的括号,方括号,引号等-可以在之间移动光标%。多亏了matchit.vim,我也可以%在if / end,for / end等之间切换。但是,这些在选择时未突出显示。 如何在选择时自动突出显示这些匹配对,就像用括号自动完成一样? 此外,如何使用修改用于这些对的背景色:highlight? 提前致谢。 我已经通过下面的@Tommy A更新了答案,以说明指定的matchit.vim组不正确,以及其他情况下%操作员永远不会将光标返回到原始位置。检查“ while”循环中的差异。建议阅读此线程的任何人都使用此版本,以避免无限循环: function! s:get_match_lines(line) abort " Loop until `%` returns the original line number; abort if " (1) the % operator keeps us on the same line, or " (2) the % operator doesn't return us to the same line after …


3
Vim,Ctags和重载
如果有多个定义,是否有办法使vim 自动跳转到正确的匹配定义。我们的C ++代码大量使用函数重载,而vim对ctags的处理似乎还没有准备好。 例如, void abc(int a, int b) { } void abc(int a, int b, int c) { } 奇怪的ctrl]是 abc(1,2,3); 采用第一个定义,而不是第二个正确的定义。另外,还会g]提示您提供选项,但这并不是我要的。 谢谢

1
合并编辑时进行的外部更改
如果对在Vim中进行编辑的文件进行了外部更改,则我知道可以通过来重新加载文件的内容:edit。但是,假设(内部)我已经更改了要保留的文件。有没有办法整合两组变更(外部变更和内部变更)?据我了解,:edit只需采取外部变化。
10 merge 

6
如何将每行的前四个字符复制到同一行的末尾?
给定一系列类似于以下内容的行: 2001 "Some Kind of Title," Author's Name, Publication Name, 1 Mar. 2002 "Some Kind of Title," Author's Name, Publication Name, 12 Oct. 2003 "Some Kind of Title," Author's Name, Publication Name, 8 Apr. 2004 "Some Kind of Title," Author's Name, Publication Name, 3 Jun. 有没有办法我可以抓住前四个字符(年份),然后将它们复制到行的末尾,使其看起来像这样: 2001 "Some Kind of …

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.