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!