StoneのBLOG

生活这种事情,从来都是自我陶醉

0%

Vim学习笔记

记录一些Vim的常用的使用方法。

我使用Vim也很久了,但是要问我学的怎么样,我也只能说啥都不会,也就会一点特别基础的移动光标而已。所以这篇文章用来记录一些我使用Vim的命令。

替换字符

经常会需要使用其他的单词替换全文的某个单词,找了一下Vim的使用,有很多,但我看不懂,我就记下我看懂了的而且感觉上还好用的那种。

1
:%s/foo/bar/gc

使用上面的命令进行逐个替换,c应该是确认的意思,y/n键进行确认替换和取消替换。

使用寄存器中的内容进行替换

有的时候想要重复的复制Vim剪切板的内容,但是由于替换之后Vim剪切板的内容就会被替换成刚刚删掉的内容,因此把想要使用替换的内容放到寄存器里会是一个方案。

首先我对寄存器并不是很了解,只记录下使用方式暂时。

比如说想把保存的内容放到k寄存器中:

1
"kyy

yy是复制当前行,也就是把当前行的内容复制到了k寄存器里了。

然后移动到想要复制的位置:

1
"kp

将寄存器中的内容粘贴。

如果是想粘贴Windows剪切板中的内容(就是Ctrl+C),那么使用下面的:

1
"*p

参考资料:

Vim中代码的整体移动

VS中对于代码的格式调整不是太智能,尤其是函数体大括号的调整急死强迫症。只好自己手动调整整块代码的缩进和反向缩进。

使用Vim的Visual模式选中想要移动的代码块,

  • v进入可视化模式移动光标选择想要移动的内容
  • V进入行可视化模式上下移动光标快速选择行内容
  • shift+> :选中区域向右移动(实际上就是>)
  • shift+< :选中区域向左移动(实际上就是<)

><本身就可以用来移动字符(基本上是光标行整行左移右移这样)。位移量可以通过设置~/.vimrc文件中的set shiftwidth=4内容来变更。

难得记录了一点可视化的内容稍微记录一下可视化状态下的选中操作,我自己认为会经常用到的:

  • va{ : 这会选中当前光标所在的{}大括号范围内的所有内容包含大括号。
  • vi{ : 这会选中当前光标所在的{}大括号范围内的所有内容不包含大括号。
    • ai的区别就是是否包含后面的范围字符
    • 拓展一下就可以猜到va<,va[,vi<,vi[的使用
  • viw : 选中当前光标所在的单词,跟我之前使用的的bve差不多。

Vim中Tab替换

TAB替换为空格

1
2
3
:set ts=4
:set expandtab
:%retab!

空格替换为TAB

1
2
3
:set ts=4
:set noexpandtab
:%retab!

!是用于处理非空白字符之后的TAB,即所有的TAB,若不加!,则只处理行首的TAB。