vim 使用积累
支持ts语法高亮
vim的版本是8.0,所以直接安装:
1 | git clone https://github.com/leafgarland/typescript-vim.git ~/.vim/pack/typescript/start/typescript-vim |
重新启动vim,ts就是高亮的~
搜索替换
搜索
在正常模式下,直接输入/
会进入查找模式,然后输入需要查找的字符,比如需要查找:video,那么只需要在正常模式输入:/video
,即可查找到当前文档下的所有video
字符串。如果匹配到了,那么按n
跳到下一个查找结果,按N
跳到上一个。
但是我们如果需要同时查找video
和Video
怎么办?我们需要的是不区分大小的查找,那么可以输入:/\Cvideo
,这样就是不区分大小写的查找。
因为默认是区分大小写的,我们可以手动设置大小写区分不区分:
\c
不区分大小写\C
区分大小写
上面这种设置只是对当前的一次查找的时候做限制,假如我们想在整个文档编辑期间都要设置为区分大小写,那么我们可以:
:set ic
(ignore case)不区分大小写:set noic
(not ignore case)不区分大小写
也可以配置下~/.vimrc
,让我们的vim大小写不敏感:
1 | " 设置为大小写不敏感查找 |
替换
简单替换表达式为::[range]s/from/to/[flags]
。
range
搜搜范围,如果没有指定范围,则用于当前行from
搜索的内容to
替换的内容flags
搜索标记
flags
有四个可选项:
c
confirm 每次替换前询问e
error 不显示错误g
globle 不询问,全部替换i
ignore 忽略大小写
这些选项可以合并使用,比如cgi
表示不区分大小写,整体替换,替换前询问。
在正则表达式中以\(
和\)
括起来的表达式,在后面的替换中可以用\1
、\2
等变量来进行替换。
比如,把稳重的所有字符串abc...xyz
替换为xyz...abc
:
1 | :%s/abc\(.*\)xyz/xyz\1abc/g |
快捷插入当前时间
在~/.vimrc
中定义:
1 | iab xtime <c-r>=strftime("%Y-%m-%d %H:%M:%S")<cr> |
这样在vim的插入模式中,输入xtime
,然后按enter或esc,即可插入当前时间:2020-04-04 22:43:21
主题
https://github.com/altercation/vim-colors-solarized
使用Vundle安装插件
https://blog.csdn.net/zhangpower1993/article/details/52184581
安装插件时先需要将插件写入到.vimrc
中,然后打开vim,需要首先运行:
1 | :so ~/.vimrc |
然后再运行:
1 | :PluginInstall |
要不然是没效果的。
折叠
vim有六种方式折叠:
- manual 手工定义折叠
- indent 用缩进表示折叠
- syntax 语法高亮来定义折叠
- diff 对没有更改的文本进行折叠
- marker 用标志折叠
手动折叠
在vim中添加如下配置:set foldmethod=manual
。
然后将光标放入某一个段落,然后键入:zfap
。
这会将该段落被一行高亮文本所替代,即创建了一个折叠。
zf
是一个操作,而op
是文本对象。可以将zf
和任何一个移动命令结合,为所经之处创建一个折叠,zf
也可以在可视模式下使用。
想打开折叠可以用:zo
。
再次关闭折叠:zc
。
可以用zr
来打开所有的折叠。
相反的操作是zm
。折叠更多。
其他设置
设置行高
1 | set linespace=4 |
设置字体和字体大小
1 | set guifont=Monaco:h14 |
打开文件
find 命令
:find
命令可以打开一个带路径的文件.:edit
命令也可以打开一个带路径的文件,这个文件也可以不存在,在编辑好后,:w
命令可以写入,从而创建文件.
<C-g>
命令可以查看文件的状态. 会显示文件名字,以及是否是新文件[New]
,以及是否编辑过[Modified]
移动
基本的操作我们也知道,使用j
向下移动一行,使用k
向上移动一行.
但是当一行文本为了适应窗口宽度而换行回绕的时候,我们用j
的话是移动一整行,但是我们可能要定位到折行的某个地方.
这时候可以用g
和移动健结合,比如<g + j>
,可以向下移动一个屏幕行.
这样理解,实体行就是真实的一行,前面有行号,折行的部分没有行号.屏幕行就是我们看到的一行行,可能一个实体行会折行成两三行.
j
向下移动一行gj
向下移动一屏幕行k
向上移动一行gk
向上移动一屏幕行0
移动到行首g0
移动到屏幕行的行首^
移动到真实行的第一个非空白字符g^
移动到屏幕行的第一个非空白字符