vim字符串替换操作:
https://blog.csdn.net/weixin_43971252/article/details/123218082
:%s/a/b/g
安装NERDTree插件
wget http://www.vim.org/scripts/download_script.php?src_id=17123 -O nerdtree.zip
unzip nerdtree.zip
mkdir -p ~/.vim/{plugin,doc}
cp plugin/NERD_tree.vim ~/.vim/plugin/
cp doc/NERD_tree.txt ~/.vim/doc/
暂时退出vim,回到终端
方法1:!ls
等类型
方法2: :sh
表示新建一个shell,然后可以进行编译等操作。想要返回的时候直接通过exit
或者ctrl+d
杀死那个shell就能回到vim了。
vim中打开了多个窗口例如NERDTree和内置终端,
可用ctrl+w
作为前缀键,然后h, j, k, l
移动选择不同位置即可。
i
:在光标所在字符前开始插入
a
:在光标所在字符后开始插入
o
:在光标所在行的下面另起一新行插入
s
:删除光标所在的字符并开始插入
I
:在光标所在行的行首开始插入 如果行首有空格则在空格之后插入
A
:在光标所在你行的行尾开始插入
O
:在光标所在行的上面另起一行开始插入
S
:删除光标所在行并开始插入
r
: 替换一个单词
R
:替换到手动取消为止
ctags
ctags -R
只需要在工程目录顶层生成tags文件。当在子目录某文件内需要跳转时,vim 会逐级向上查找tags文件
需要以下配置(后面的 ; 不能省略):
set tags=tags;
set autochdir (用于自动切换工作目录)
自带的文件浏览器Netrw
:E 当前窗口打开目录
:Vex 竖直分割
:!ls查看当前文件目录下的其它文件。
:f查看文件名
ctrl+]跳转定义处
ctrl+t返回
ctrl+o
有多个定义如何解决?
:ts命令可以列出所有匹配选项选择序号跳转
通过映射map <c-]> g<c-]>
zz:将当前行移动到屏幕中间
屏幕级移动:
H 移动光标到屏幕的第一行
M 移动光标到屏幕的中间一行
L 移动光标到屏幕的最后一行
单词级移动
w 或 W 移动到下一单词的开头
b 或 B 移动到上一单词的开头
e 或 E 移动到光标所在单词的末尾
确定操作单位后,需要确定命令重复执行的次数。Vim光标移动命令的操作对象范围计算公式为: 操作范围 = 操作次数 x 操作单位
例如:5h命令表示左移5个字符,8w命令右移8个单词
%: 括号匹配
标记:
https://www.jianshu.com/p/37538ec6d8f7
mark {a-z},给当前文档打标记,通过 '+[标记]跳转过去
注释标记方式是按下m+{a-z},那么该行就被标记了。
:marks: 显示所有mark
:delm {marks}:删除标记
还有一些vim内置的标记:
0~9: 最近打开的文件
newtab多标签之间的切换:
向右gt,向左gT
复制粘贴删除
复制行 yy 复制n行 nyy
粘贴行 p
删除行 dd 删除n行 ndd
删除字 dw 复制字 yw
可视块选择复制:
进入可视化模式 v,V,Ctrl-v
可视化模式下,方向键选择块
按y复制选择的块
多行注释
多行注释按键操作:
注释:Ctrl-v 进入列编辑模式,向下或向上移动光标,把需要注释的行的开头标记起来,然后按大写的I,再插入注释符比如"#",按Esc,就会全部注释了。
删除:Ctrl-v 进入列编辑模式,向下或向上移动光标,选中注释部分,按d,就会删除注释符号。
‘*’ 匹配当前光标所在的字符串
和find一样,n和N
di(
:删除本行括号()内的内容
ci(
:。。。删除之后立马进入插入模式
di"
:删除本行中 “” 内的内容
ci"
:。。。删除之后立马进入插入模式
di{
:删除 {} 内的内容
ci{
:。。。删除之后立马进入插入模式
vim 设置相对行号:
set rnu
(relative number)
取消相对行号
set nornu
配合 set nu
和 set nonu使用