Vi & Vim

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

1
为什么:set bg = dark和:set bg = light的顺序很重要?
在尝试匹配终端的调色板和GVim的调色板时,我注意到了这一点: 当我打开GVim和Vim时,我看到:( 这是同一个文件,我的vimrc。) 如果我这样做:set t_Co=256,则GVim中什么都不会发生(除了闪烁),而终端中的颜色现在看起来有所不同。如果我:set bg=dark现在这样做,则没有任何区别(再次GVim闪烁)。如果再这样做:set bg=light,然后:set bg=dark又得到: 双方:set bg=dark并:set t_Co=256出现在我的vimrc。为什么我:set bg和:set t_Co坚持,以及为什么设置:set bg=dark后再次:set bg=light有所作为它最初没有? 我使用的是Arch Linux,终端是GNOME终端,但没有.gvimrc。 $ vim --version VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Feb 4 2015 08:03:11) Included patches: 1-617 Compiled by Arch Linux Huge version with GTK2 GUI. Features included (+) or not …

2
使用showcmd显示命令历史记录
使用set showcmdVim时,在屏幕的最后一行显示部分命令。例如,在普通模式下,键入命令时,dt.将显示最后一行dt,然后,当您单击.命令时,将显示完整的行,因此不显示任何内容。 有没有办法显示完整的命令?例如,键入时dt.gU(,dt.将显示first 。当开始键入第二个命令时,第一个命令将被清除,以便最后只gU(显示。 例如,这在说明GIF时可能很有用;并在遇到意外结果时检查是否键入了所需的内容。

2
部分路径的类似Zsh的制表符完成
与Vim中文件名的类似Bash的部分制表符完整相关 的真正奇妙功能之一zsh就是您可以键入,例如ls /u/s/m/m/who.1,按Tab并完成输入 ls /usr/share/man/man1/who.1.gz。一旦习惯了,回到真的很烦/u<tab>/s<tab>/m<tab>/m<tab>...,特别是当整个部分路径只能解析为一条实际路径,但是每个单独的组件可能有多个补全时。例如在使用:e或时,可以在Vim中实现:cd吗? zsh中还有其他与路径有关的有用功能,例如用于使用替换cd foo bar为的等效路径(即变为)。如果有一个解决方案也可以引入这些(本质上是将与shell相关的任务移交给可以很好地完成这些任务的shell),那将是很好的。foobar/blah/foo/baz/yada/blah/bar/baz/yada

2
减少vim加载时间
我正在使用https://github.com/carlhuda/janus vim发行版,显然对加载时间不满意。 剖析和加快Vim加载时间的最佳方法是什么?将加载时间与http://vim.spf13.com/进行比较也很有趣

3
在VIM中写减价时自动重新换行
很多时候,我在VIM中编写markdown,并且这些markdown中会有段落。为了帮助编辑,我将Vim设置为在80个字符上换行。如果我继续输入,效果很好,但是问题是,如果我需要进行一些校正,它将变得非常烦人。 演示(摘自Wikipedia一阶逻辑): The adjective "first-order" distinguishes first-order logic from higher-order logic in which there are predicates having predicates or functions as arguments. In first-order theories, predicates are often associated with sets. In interpreted higher-order theories, predicates may be interpreted as sets of sets. 到目前为止,一切都很好。但是,当我修改本文时,我可能会决定在中间添加一些内容,例如: The adjective "first-order" distinguishes first-order logic …

1
在Windows 7上无法使用Gvim和VIM输入Unicode
我想使用(g)Vim输入不同的语言。但是,当我使用语言栏(Devanagari或北印度语字符)切换到另一种语言并键入任何内容时,(g)vim显示??? ??。 我试过的 write ++enc=utf-8 foo.txt set fileencoding=utf-8 set enc=utf-8 信息: GVim版本:7.4,及其+ multi_byte。 默认vimrc文件中没有更改。 我刚开始(g)vim。

2
如何将所有线匹配的模式匹配在一起?
我只想将具有特定模式(例如;)的行连接在一起,但是使用时g/;/j,除非多次调用,否则无法正常工作。 例如以下内容: a 1; 2; 3; 4; 5; b 6; 7; 8; 9; c 使用时::g/;/j输出为: a 1; 2; 3; 4; 5; b 6; 7; 8; 9; c 或:g/;/-j给出: a 1; 2; 3; 4; 5; b 6; 7; 8; 9; c 与:类似:g/;\_.\{-};/j。 我的预期输出是: a 1; 2; 3; 4; 5; b 6; …

2
创建vim插件应遵循什么步骤?
所以我的问题很简单。学习vim脚本只是为了创建vim是一个好主意,还是我们应该采用其他一些更被接受的语言。 例如,此链接打开一个YouTube视频,其中显示了如何使用Python创建vim插件。 除非有人打算创建一些vim插件,否则Vim脚本并不完全有用。那么,除非仅使用vim脚本,否则还有什么事情是做不完的吗?
11 vimscript 

3
是否可以使用参数创建映射?
我已经创建了一些映射,如下所示: :nnoremap <buffer> <leader>xyzABC :call SomeFunc('ABC')<CR> :nnoremap <buffer> <leader>xyzDE :call SomeFunc('DE')<CR> :nnoremap <buffer> <leader>xyzFoo18 :call SomeFunc('Foo18')<CR> :nnoremap <buffer> <leader>xyzBar22 :call SomeFunc('Bar22')<CR> 可以按需工作。 我现在正在寻找创建映射模板的可能性,该模板将允许我删除映射中明显的多余部分,例如 :nnoremap <buffer> <leader> xyz? :call SomeFunc(?)<CR> 这样我就可以将任何值作为参数传递给SomeFunc。 有这种可能性吗?

5
如何跨终端复制?
我正在使用Linux系统。在两个终端中打开两个vim。现在我想将文本从A复制到B。一种方法是选择A中的文本,使用鼠标复制,然后切换到B,在插入模式下,命令<c-r>+将粘贴文本。 无论如何,不​​使用鼠标就能执行它吗?像"+yy在A中,当切换到B, o<c-r>+?我徒劳地探索了几种组合。我搜索了“跨终端复制”,但一无所获。 用户@statox建议使用可视化模式,即,一个溶液v$"+y在A中,当切换到B, o<c-r>+。 有没有简单的方法可以在不进入v模式的情况下复制A中的文本?公认进入v模式不会涉及太多击键,只是想知道是否有更好的方法。例如。如果光标在一行的中间,则yy复制整行(以注册"),同时0v$y用额外的击键进行相同的操作。 或者,我的问题可以降低到是否有什么办法比减少击键0v$"+y的副本,这样我可以用<alt-tab>o<c-r>+粘贴。

2
按住键时如何重复映射
我在.vimrc一些简单的映射中可以轻松调整拆分窗口的大小: noremap <Leader><UP> <C-w>+ noremap <Leader><DOWN> <C-w>- 效果很好,但是例如,当我想调整10行的窗口大小时,我必须按下并释放Leader+ UP10次​​。 按下键时如何重复此映射?我想要的是,当我按Leader+时UP,映射将被应用一次,然后在短时间内将再次应用,依此类推,等等。 注意:我知道<C-w>+可以在计数前加上前缀,并且可以在映射中对其进行硬编码,也可以在使用映射之前简单地输入一个计数,但这不是我想要的方式。 注意2:我也知道,流行的映射窗口大小的映射是使用+和-键,这些键更容易按几次,但是我既不想使用这些键也不能这样做。

2
如何进一步增加cmdline历史记录的大小?
我已经在.vimrc文件中添加了以下设置: set history=1000 它已经存在了一段时间,我每天都在vim中工作,所以到目前为止已经执行了许多命令。我从vim帮助中知道,不存储重复项和映射的命令行,它还说: Use the 'history' option to set the number of lines that are remembered (default: 20). 目前,在我的历史大约130线(:his和q:改变一点点,第二个拥有约90项),但在我看来,应该有更多。缺少一些命令,例如打开某些文件或使用复杂的正则表达式替换某些命令。有一段时间没有使用过,但是我把这个历史记录的大小增加了足够长的时间。 还有另一个我不知道的限制吗?也许这不是增加cmdline历史记录大小的正确方法?



1
gs的用例
根据有关文档gs: 入睡N秒钟(默认值为1) 因此,您可以使用来使Vim进入睡眠状态10秒钟10gs。此命令的一个好用例是什么?

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.