配置文件

~/.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+$//