配置文件
~/.vimrc
# 禁用备份,禁止在当前目录生成.un~ 和.~文件
set noundofile
set nobackup # 设置取消备份
set noswapfile # 设置取消禁止临时文件的生成
set number # 在每行前面显示行号
set ts=2 # 设TAB宽2个空格(tabstop)
set tabstop=4 # 设TAB宽4个空格(ts)
set expandtab # 将tab键自动转换为空格
set ruler # 编辑过程中右下角显示光标的行列信息
set showcmd # 在状态栏显示正在输入的命令
set history=1000 # 设置历史记录条数
set autoindent # 设置C/C++方式自动对齐
set cindent # 设置C/C++方式自动对齐
set encoding=utf-8 # 设置编码方式
syntax enable # 开启语法高亮
syntax on # 设置语法高亮
set showmatch # 设置匹配模式
set t_Co=256 # 指定配色方案为256色
set ignorecase # 设置搜索时忽略大小写
set shiftwidth=4 # 设置自动对齐空格数
set smarttab # 设置退格键时可以删除4个空格
set softtabstop=4 # 设置退格键时可以删除4个空格
基本命令
o # 在当前行下面插入新行
shift + o # 在当前行上面插入新行
:%s/2019-01/2019-02/g # 批量搜索替换
命令模式常用跳转
0 # 跳转到行首
^ # 跳转到非空白符号行首
$ # 跳转到行尾
H # 跳到当前屏幕顶上
M # 跳到当前屏幕中间
L # 跳到当前屏幕下方
w # 跳到下一个单词的开始
e # 跳到单词的结束
b # 跳到上一个单词的开始
gg # 跳到文件的开始
G # 跳到文件的结束
10G # 跳到第10行
fa # 跳到当前行下一个a位置
Fa # 跳到当前行上一个a位置
% # 跳到匹配括号
ctrl + f # 向前一页
ctrl + b # 向后一页
ctrl + d # 向后半页
ctrl + u # 向前半页
ctrl + e # 向前一行
ctrl + y # 向后一行
命令模式常用编辑
dd # 删除当前行(留在缓冲区,粘贴)。
dt + a # 删除当前位置到下一个a字符之间的内容。
Shift + J # 把下一行内容移到本行末尾。
# 移动一段内容:将第9行到第15行的文本内容到第16行的后面
:9,15 move 16
: 9,15 m 16
编辑模式常用命令
Ctrl + n # 自动补全名称
列操作
删除列
1.光标定位到要操作的地方。
2.CTRL+v 进入“可视 块”模式,选取这一列操作多少行。
3.d 删除。
插入列
插入操作的话知识稍有区别。例如我们在每一行前都插入”() ”:
1.光标定位到要操作的地方。
2.CTRL+v 进入“可视 块”模式,选取这一列操作多少行。
3.SHIFT+i(I) 输入要插入的内容。
4.ESC 按两次,会在每行的选定的区域出现插入的内容(显示可能会有一点延迟)。
VIM使用列模式:在每行行首添加内容
在正常模式安Ctrl+v 进入块模式,然后移动光标或者按G,然后按I在首部插入,最后按Esc即可;
VIM使用列模式:在每行行尾部添加内容
在正常模式安Ctrl+v 进入块模式,然后移动光标或者按 G 到末行,然后按 $ 到所有行的行尾,按 A 在行尾添加,输入添加的内容(只有第一行会显示),按 退出编辑即可。
常见问题
现象:
使用VIM打开的文件中 ^M 代表什么? 应该是换行?
linux中用\n 0x0a 在*nix系统里则为\n
mac 中用\r 0x0d
win 中用\r\n 0x0d0a 在DOS/Windows里,文本文件的换行符为\r\n
解决:
使用VIM的命令模式,将所有的\r替换成空即可:输入“%s/\r//g”,将\r都替换成空就保留了\n
补充:删除行首和行尾的空格,加号是特殊字符,在拼接字符的时候需要转意。
行末:
行首空格:^+\s
删除行尾空格:
:%s/\s+$//