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

参考:https://stackoverflow.com/questions/2514445/turning-off-auto-indent-when-pasting-text-into-vim/2514520

5、空格与 tab的替换

TAB替换为空格:

:set ts=4
:set expandtab
:%retab!

空格替换为TAB:

:set ts=4
:set noexpandtab
:%retab!
Copyright Curiouser all right reserved,powered by Gitbook该文件最后修改时间: 2023-07-21 09:41:54

results matching ""

    No results matching ""