vim常用配置
bash -c 'cat > ~/.vimrc <<EOF
"=========================================================="
"设置tab键替换为两个空格"
set ts=2
set expandtab
%retab!
"=========================================================="
"设置在状态行显示文本及编码格式的信息"
set statusline=\ %<%F[%1*%M%*%n%R%H]%=\ %y\ %0(%{&fileformat}\ %{&encoding}\ %c:%l/%L%)\
"=========================================================="
"高亮显示搜索到的所有文本"
"set hlsearch"
"=========================================================="
"自动对齐上一行"
set autoindent
set smartindent
EOF'
命令行模式
| 功能 | 命令 | 描述 |
|---|---|---|
| 水平分屏 | :sp | 水平分屏打开另一个文件 |
| 垂直分屏 | :vsp | 垂直分屏打开另一个文件 |
| 多屏间切换 | Ctrl+W+W | |
| 多屏退出 | :qall | |
| 排序 | :sort | |
| 去除重复行 | :sort u | |
| 移动到文本开头 | gg | |
| 移动到文本结尾 | G | |
| 移动到行首 | 0 | 即行首有空格的情况,会移动到空格之前 |
| 移动到行末 | $ | 即行末有空格的情况,会移动到空格之后 |
| 向下翻页 | Ctrl+f | |
| 向上翻页 | Ctrl+b | |
| 以word为单位移动 | 单词数+W/b,B/b,E/e | 2w表示向后移动2个word; 2b表示向前移动2个word; 2e表示向后移动2个word(但是会移动到word字符之后) 如果想忽略标点符号的word,就用大写 W B E |
| 行内查找字符 | f+字符 | 向后移动到某字符 |
| F+字符 | 向前移动到字符a处 | |
| 全文查找当前光标处的单词 | * | 向后查找 |
| #+字符 | 从文件开头到文件尾开始查找匹配字符 | |
| ?+字符 | 从文件尾倒着到文件开头开始查找匹配字符 | |
| 光标右边最近数字进行自加 | Ctrl+A | |
| 光标右边最近数字进行自减 | Ctrl+X | |
| 删除文本中的空行 | :g/^$/d | |
| 注释文本行 | v进入视图模式,选择要注释的行,然后Ctrl+v进入块选择模式,然后大写I插入#或者/,再ESC退出 | |
| :起始行号,结束行号s/^注释符//g | 在10 - 20行添加 // 注释 :10,20s#^#//#g 在10 - 20行添加 # 注释 :10,20s/^/#/g | |
| 快速搜索光标所在单词 | Shift+* | |
| 显示匹配个数 | :%s/xxx//gn |
插入模式
| 功能 | 命令 | 描述 |
|---|---|---|
| 删除光标前面的单词 | Ctrl+W | |
| 删除光标前面的一行 | Ctrl+U | |
| 在光标前面插入一个tab | Ctrl+I | |
| 将光标以下所有内容向上提 | Ctrl+H | |
| 将光标以下所有内容向下提 | Ctrl+J/M | |
| 向下联想 | Ctrl+N | |
| 向上联想 | Ctrl+P | |
示例
1、行首或行尾加字符
#每行行首加“#”
:%s/^/#/g
#每行行尾加" ;\"
:%s/$/ ;\\/g
#第二行到第十五行的行首添加“==”
:2,15 s/^/==/g
#第二行到文本末行的行首添加“==”
:2,$ s/^/==/g
#第二行到文本首行的行首添加“==”
:2,1 s/^/==/g
2、将文本中相同数字进行自增
原始文本
docker save -o 1.tar docker.io/openshiftistio/origin-ansible:0.7.1 ;\
docker save -o 1.tar docker.io/openshiftistio/origin-ansible:0.8.0 ;\
docker save -o 1.tar docker.io/skydive/skydive:latest \
:g/1.tar/ s//\=line('.').'.tar'/
效果文本
docker save -o 1.tar docker.io/openshiftistio/origin-ansible:0.7.1 ;\
docker save -o 2.tar docker.io/openshiftistio/origin-ansible:0.8.0 ;\
docker save -o 3.tar docker.io/skydive/skydive:latest ;\
3、去除文本中的换行符^M
Windows下保存的文本文件,上传到Linux/Unix下后总会在末尾多了一个换行符^M,导致一些xml、ini、sh等文件读取错误
进入命令模式
%s/^M//g (注意,^M = Ctrl v + Ctrl m,而不是手动输入^M)
# ^M 表示清除成功
4、设置粘贴时换行问题
有些版本vim的默认配置下,在插入模式下粘贴文字会换行加tab缩进,例如
line
line
line
在命令行中设置或在配置文件中设置
:set paste
5、空格与 tab的替换
TAB替换为空格:
:set ts=4
:set expandtab
:%retab!
空格替换为TAB:
:set ts=4
:set noexpandtab
:%retab!