Vi & Vim

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

1
如何在标题下划线?(reStructuredText,Markdown,asciidoc样式)
各种纯文本标记语言: reStructuredText,Markdown,asciidoc(还有其他),使用下划线表示标题。 Chapter 1 Title =============== Section 1.1 Title ----------------- Subsection 1.1.1 Title ~~~~~~~~~~~~~~~~~~~~~~ Section 1.2 Title ----------------- Chapter 2 Title =============== 有没有方便的方法在vim中添加这些? 添加一个长度与上面的行匹配的字符。
13 markup 

7
返回正常模式时,vim可以自动关闭Capslock吗?
几乎每次我输入大写字母之后,我都会忘记返回正常模式时关闭大写锁定。然后,我尝试移动光标,并最终加入了很多行和很多其他我不希望发生的事情。 当我按Escape键进入正常模式时,是否可以将vim配置为关闭大写锁定? 如果有特定于操作系统的解决方案,那么我对适用于Linux的解决方案感兴趣。


3
vim不显示正在键入的命令
我正在阅读vimtutor,在第2.1课中,有关于键入dw之类命令的注释: NOTE: The letter d will appear on the last line of the screen as you type it. Vim is waiting for you to type w . If you see another character than d you typed something wrong; press <ESC> and start over. 但是在vim或gvim中都看不到我在命令行中键入的命令。我该如何解决?


3
如何即时启用/禁用augroup?
我augroup在自己的文件.vimrc夹中创建了一个,autocmd并且需要autocommand即时启用/禁用这些控件。 这个想法是创建一个映射(F4比如说),该映射将在一次按下时启用这些自动命令,而在再次按下时禁用这些自动命令,而无需提供文件或重新加载.vimrc。 我怎样才能做到这一点?

1
提高宏播放速度?
我录制了一个简单的宏,并在随后的几行中对其进行了回放,但是回放速度似乎非常慢(每秒处理几行)。这是预期的,并且有办法提高这种速度吗?
13 macro 

1
是否有incsearch搜索replace命令?
我真的很喜欢Vim的incsearch功能。当我进行更换时,是否可以使用它或类似的方法? 例如,如果在普通模式下,我输入: :%s/potato/ 我可以potato在文件上突出显示所有s 吗,就像incsearch我写时突出显示它们一样 /potato ? 使用正则表达式时,这已经对我有很大帮助。当我写这篇文章时,一个非常非常好的地方是: :%s/potato/banana/ 它将potato用bananas 替换s,并突出显示它们-也许替换的颜色应该不同。直到我按Enter键,它才“提交”更改)。 如果有帮助,我目前正在使用neovim。

1
如何与VIM交互搜索/ grep?
有什么方法可以配置VIM以便在每个文件中交互式搜索整个项目? 通过交互式,我的意思是更新每个按键。 类似于Emacs counsel-git-grep,请参见:示例演示。
12 search  vimgrep 

1
搜索时忽略变音符号/重音符号
有没有一种方法可以指示Vim在搜索时要忽略变音符号/重音符号?例如,我希望能够搜索 kočička 通过输入 /kocicka 在ignorecase和smartcase选项是非常有用的,但他们似乎并不有什么关系变音符号/口音。
12 search 

4
命令遍历拼写建议
我映射zz到1z=,这在大多数情况下是很好的,但是时不时地,第一个建议不是正确的建议。 因此,我想继续重复zz(或.)循环浏览其他建议。 zz那么,在同一个单词上的第二u2z=个zz将像一样工作,第三个将像一样工作u3z=,依此类推。 关于如何做到这一点的任何想法? 编辑: 基于@ nobe4的出色回答,我设法完成了我想做的事情,但是如果有人有任何改进或建议,我会在这里待一会儿: let s:spell_position = [] let s:spell_count = 0 let s:spell_word = "" function! LoopSpell() if s:spell_position != getpos('.') || \ (s:spell_count > 0 && s:spell_word !~ expand("<cword>")) let s:spell_count = 0 let s:spell_position = getpos('.') endif if s:spell_count > 0 silent execute "normal! …

2
如何保存和还原映射?
我正在为Vim开发一个插件,我想定义一个仅在“执行插件”时可用的映射。 到目前为止,插件的(简化)工作流程如下: 用户调用插件命令 该命令调用预处理功能: function! s:PreTreatmentFunction(function, ...) " Do some pretreatment stuff " Create a mapping to call the TearDown nnoremap <C-c> :call TeardDown()<CR> " Call a function depending on the parameter passed to this one if function == "foo" call Foo() else call Bar() endif endfunction 调用另一个函数来更改缓冲区的状态(Foo()或Bar()在上一个函数的最后一行中) 用户使用映射来调用拆解函数 拆卸功能删除创建的映射: …

1
与外界交谈
我可以从另一个shell更改vim实例中的变量(不通过tmux发送密钥)吗? 我问是因为我想使用latexmk的compiling_cmd,success_cmd和failure_cmd选项在状态行上显示编译状态。 也许我可以让vim查找某些文件的存在或不存在(使用文件作为布尔变量)?但这似乎有点肮脏。希望有更好的方法。
12 variables 

1
为什么p将复制的行粘贴在当前行之后而不是在当前单词之后?
假设我有以下四行: line1 line2 line3 line4 现在,如果我去line1执行yy复制行的a,然后去开始line3并使用'p'粘贴,我会得到 ... line3 line1 line4 .... 为什么粘贴line1后line3在新行? 我最初的想法是因为换行符$附加在第3行上,并且当我按pvim 时line3$,它被视为一个单词,因此粘贴到了它之后line3$。但是,似乎我的理解是错误的。因为如果执行此操作line3 $,然后p在行的开头执行a ,则会得到相同的结果。 为什么要p创建新行并在其后粘贴新行line3?

1
vim中的混合颜色语法
我经常使用vim 在knitr中编写文档,这意味着我将markdown代码与R代码混合在一起。我想在R块上使用R语法着色,但在所有其他片段上都使用markdown或不着色。这可行吗?怎么样?

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.