Vi & Vim

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

5
我可以使用“点运算符”重复一个宏吗?
我可以在.命令中重复一个宏吗?例如,我希望能够输入: @q... 并有效呼叫@q4次。使用默认的行为,这只有当“Q”拥有一个命令,例如dw,x或iHello<esc>。(尽管这很有意义,因为'。'会重复最后一次更改,而不是最后一次击键/命令) 我也很希望这项工作能算是重要的。例如,键入: 3@q. 实际上将与运行@q6次相同。如何配置此行为?
15 macro  count 

1
有没有办法将Vim regex文字转换为不同的魔术模式?
如果我在字符串文字中有一个神奇的Vim正则表达式,是否可以将整个正则表达式转换为使用不同魔术模式的替代表示形式,因此可以将该等效正则表达式粘贴到源代码中? 例如,如果我要转换此魔术模式,请执行以下操作: '\m-\=\<\d\+L\=\>\|0[xX][0-9a-fA-F]\+\>' 变成非常魔幻的模式,使其更具可读性,例如: '\v-=<\d+L=>|0[xX][0-9a-fA-F]+>' 我经常犯错误,尝试手动将其转换。


1
如何在不退出插入模式的情况下将光标移动到正确的缩进级别?
例如,我有此JavaScript代码。该|字符代表光标位置,并且在空行上。 function a() { console.log("a"); function b() { console.log("b"); function c() { console.log("c"); } | c(); } b(); } 完成请求的操作后,内容将如下所示: function a() { console.log("a"); function b() { console.log("b"); function c() { console.log("c"); } | c(); } b(); } 我要的是一个映射命令。 非常感谢你! :-)

1
为什么我的窗户一起滚动?
我在同一缓冲区上打开了两个窗口,我想同时编辑同一文件的两个部分。我不能,因为窗户一起滚动。我已经noscrollbind设定好,所以对此感到困惑。还有什么可能导致这种情况? 如果我开始一个新的会话,那么问题就消失了。我不想不必关闭会话,因为我已经记住了所有缓冲区号。

1
对于ftplugin中的autocmd,我应该使用模式匹配还是<buffer>?
我有一个用于TeX和Markdown文件的autocmd以自动保存文件。没什么异常: autocmd CursorHold *.tex,*.md w 但是,随着这些文件的自定义设置的增加,我将它们拆分为ftplugin/tex.vim和ftplugin/markdown.vim: " ftplugin/tex.vim autocmd CursorHold *.tex w " ftplugin/markdown.vim autocmd CursorHold *.md w 现在,这些文件仅作为适当文件的来源,因此模式匹配是多余的。显然,autocmds可以是局部缓冲区的。来自:h autocmd-buffer-local: Buffer-local autocommands are attached to a specific buffer. They are useful if the buffer does not have a name and when the name does not match a specific pattern. But …
14 autocmd  filetype 


3
同时编辑不同的单词,就像在Sublime Text中用相同的一行选择多个选项
是否可以同时编辑同一行中的多个单词? 例如,假设我有这个: Spam and Eggs is all you need for a healthy breakfast 我想将行更改为: organic_Spam and organic_Eggs is all you need for a healthy breakfast 我想突出显示“垃圾邮件”和“鸡蛋”,并同时在“垃圾邮件”和“鸡蛋”之前加上“ organic_”。有点像使用可视块在不同的行上同时写,但是这里在同一行上写东西。我看到一位同事使用Sublime Text进行此操作,并尝试使用Google谷歌搜索,但无济于事。

2
vim + tmux下的光标形状
在Cygwin下的tmux中运行vim时,如何具有不同的光标形状? 没有tmux,这些行就足以实现我想要的功能: let &amp;t_SI = "\e[5 q" let &amp;t_EI = "\e[2 q" 但是以某种方式我的tmux打破了它-无论我处于哪种vim模式,光标都具有块形状。 我的规格: Windows 7 x64 Cygwin x86 TMUX 1.9a Vim 7.4.726(使用+ cursorshape编译) 终端仿真器:minty 1.1.3 在Cygwin Terminal或Cmder中使用(无论哪种方式,光标形状仅在不使用TMUX的情况下都有效) echo $TERM给我screen-256color(在TMUX和它的外面,因为我有export TERM=screen-256color我的.bashrc .tmux.conf 包含: set -g default-terminal "screen-256color" setw -g xterm-keys on 我已经尝试过但没有成功的东西: export TERM=xterm export TERM=vt100 “上栏右击&gt;选项&gt;外貌&gt;光标”(它永久改变光标,vim的模式依然不改的话)
14 tmux  cygwin 

1
折叠所选行
如何折叠和展开在可视模式下选择的线条? 可以说我有三个段落,我想将前两个或最后两个折叠成一行: Test ==== Lorem Ipsum es simplemente el texto de relleno de las imprentas y archivos de texto. Lorem Ipsum ha sido el texto de relleno estándar de las industrias.. Lorem Ipsum es simplemente el texto de relleno de las imprentas y archivos de texto. Lorem Ipsum ha sido …


1
如何从完成中排除某些文件扩展名?
有没有一种方法可以配置vim关于它认为“适合”打开的文件类型? 让我通过一个例子澄清一下。假设您正在处理乳胶文档。构建文件后,目录中将包含以下内容(以及与构建相关的其他文件): X.aux X.log X.out X.pdf X.tex 现在,如果您正在处理另一个文件(例如Y.tex),并且想要:sp X.tex,则可以&lt;Tab&gt;用来循环浏览可能的文件,即: :sp X&lt;Tab&gt; 看来vim已经选择了您最可能需要的文件,并自动对这些文件自动完成。这是我的vim自动完成文件的顺序: X.pdf X.tex X.aux X.log X.out 再次,好像vim决定我可能要打开.pdfor .tex文件,并先按字母顺序显示给我。然后,它再次按字母顺序显示其余文件。首先,我的理解正确吗? 如果是这样,我怎么能告诉vim它以为我不应该对.pdf用它打开文件感兴趣?这样,第一个文件&lt;Tab&gt;将立即.tex为我提供我真正要查找的文件。

3
我可以使Vim还将“小删除”保存到寄存器“ 1”中吗?
我最近从设置中删除了YankRing插件,部分原因是它导致了宏的某些问题,但主要是因为我决定最好训练自己使用Vim的寄存器,特别是删除文本最初存储在寄存器中的方式。"1然后通过"2,"3等向上移动,因为进行进一步的删除非常有用。 但是,当删除/更改删除少于一行的文本时,它将存储在"-较小的删除寄存器中(某些移动命令有一些例外)。如果随后进行了一些小删除,则会丢失该部分文本。 是否有可能让Vim将所有删除内容存储在寄存器中"1? nnoremap d "1d 几乎可以使用,但最终在寄存器"1 和 中都显示了文本"2。 我不介意小删除寄存器的功能是否受到影响。建议我更改行为以将小的删除内容保存到命名寄存器中绝对不是一个有用的答案,这就是我目前正在做的事情。
14 register 



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.