我是一名C#开发人员,他最近刚决定扩展我对可用工具的了解.我决定学习的第一个工具是Vi/Vim.到目前为止,一切进展顺利,但有几个问题似乎无法找到答案:
让我们说我想拉一系列线.我知道有很多方法可以这样做,但我想通过行号来做.我认为它与替代命令的工作原理类似,类似于81,91y
.有没有办法做到这一点?
我对g
普通模式下的命令有点困惑.它似乎做了无数的事情,我无法确定g命令的核心内容.我很困惑它是否是一个动作命令或其他命令的"全部捕获"在正常模式下运行.有人可以解释一下这个问题,还是指向一个能够很好地解释g
命令的参考资料?
是否有任何简单/快捷的方式"猛烈"进入vim的"最后搜索"注册表("/)?
从vim文档中可以看出答案是否定的,但可以通过"let"命令进行分配:
It is writable with ":let", you can change it to have 'hlsearch' highlight
other matches without actually searching. You can't yank or delete into this
register.
Run Code Online (Sandbox Code Playgroud)
理想情况下,我想做的是:
"/5yw
Run Code Online (Sandbox Code Playgroud)
这会将光标下的下5个单词拉出来并将它们放在最后一个搜索缓冲区中
或者,如果有办法搜索命名寄存器的内容,那也可以.换句话说,如果我能做到:
"A5yw
Run Code Online (Sandbox Code Playgroud)
然后搜索寄存器A中的内容,这也可以.
我最接近的是抓到一个命名的寄存器然后将该寄存器复制到最后一个搜索寄存器,例如
"A5yw
:let @/=@A
Run Code Online (Sandbox Code Playgroud)
冒更长时间问题的风险,我想说的是,我并不总是5个单词,我想"猛拉和搜索" - 有时它是17个字符,有时它是在行尾,等等......所以一个硬编码的宏并没有给我我想要的灵活性.
当autoindent打开时,如何阻止vim用制表符替换空格?
一个例子:如果我在行的开头有两个制表符和7个空格,并且tabstop=3
,我按下Enter键,下一行有四个制表符,开头有1个空格,但我不希望...
有没有办法在vi/vim中将光标移动相对数量的行?假设您在要删除的代码块下面有10行光标.如果您的行号以相对顺序显示,那么拥有一个"跳10行向上命令"将会带您到那里.
或者最好显示绝对行号并转到xgg,其中x是行号?
我该如何在Vim 7中为python设置语法高亮?
我想为一种代码文件设置我自己的colorschemes和语法高亮.
示例:在一个tmux窗格中复制(通过vim),然后切换到另一个窗格(运行另一个vim实例)并使用vim paste命令粘贴.我知道这可以通过tmux(使用前缀+)完成,但如果我可以使用vim绑定进行复制和粘贴,那将非常方便,因为我只是在运行vim的不同窗格之间切换.
有任何想法吗?
我想知道是否有办法回到你在Vim上的前一行.
比方说,例如,我正在编写C代码,我只是想#include
在页面顶部添加一个:我按下gg
并转到顶部,添加#include
,然后我想返回到我离开的行.
这可能在Vim?
我有一个包含字符串的文件usrbin
.我想搜索usrbin
并替换它/usr/bin/
.
我试过:%s/usrbin/usr/bin/g
,但它显示错误E488: Trailing characters
.
如何在搜索和替换中包含正斜杠?
在命令行模式下是否可以进行模态编辑?
一些例子:
!ls ~/foo/bar
我想db
删除吧ls
到mv
和跳回$