# VI使用技巧

# 进入编辑模式

a 在当前光标后面插入 A 在行尾插入 i 在当前光标插入 I 在行首插入 o 在下一行插入 O 在上一行插入 ​ ciw 删除当前一个单词,并进入插入模式 ct" 删除双引号中间的内容,并进入插入模式 ctf 删除从当前位置到下一个f字符之间的字符,并进入插入模式

# 光标定位:

通过键盘[kjhl]或者上下左右键可以实现光标的上下左右移动; ​ w 前移一个单词,光标停在下一个单词开头; e 前移一个单词,光标停在下一个单词末尾; b 后移一个单词,光标停在上一个单词开头; ​ A|end|$ 将光标定位到行尾; 0|home|^ 将光标定位到行首; ​ gg 将光标定位到文件第一行 G 将光标定位到最后一行 nG|ngg 到文件第n行。 :n 移动到第n行。 ​ fm 快速定位到当前行,光标之后的第一个m字符处(通常在行首使用),如果有多个相同字符,可以使用分号;进行下一个选择。 Fm 同上,只是反向查找。

# 复制/剪切/粘贴:

yy 复制整行 y$|y+end 从光标当前位置复制到行尾。 y0|y+home 从光标当前位置复制到行首。 p(小写) 粘贴(在下一行粘贴) P(大写) 粘贴(在上一行粘贴) ​ d$|D|d+end 删除(剪切)当前位置到行尾的内容。 d0|d+home 删除(剪切)当前位置到行首的内容。 [n] dd: 删除(剪切)(n)行。 :m,nd 剪切m行到n行的内容。 dgg: 剪切光标以上的所有行。 dG: 剪切光标以下的所有行。 daw和das:剪切一个词和剪切一个句子,即使光标不在词首和句首也没关系 dw:剪切当前光标到单词结束! ​ 删除匹配行: :g/UUID/d 删除包含UUID的行 :g/#|^$/d 删除#注释和空白行 :g/^$|^\s*$|^#/d 删除#注释/空白行/空字符串行

替换(一般命令模式): r: 替换光标处的字符,同样支持汉字。 R: 进入替换模式,按esc回到正常模式。 1.2.5 替换(底部命令模式): 😒/old/new 用new替换当前行第一个old。 😒/old/new/g 用new替换当前行所有的old。 :n1,n2s/old/new/g 用new替换文件n1行到n2行所有的old。 :%s/old/new/g 用new替换文件中所有的old。 :%s/^/#/g 在每一行的行首插入#,^表示行首。 :%s/$/xxx/g 在每一行的行尾插入xxx,$表示行尾。 ​ 所有替换命令末尾加上c,每个替换都将需要用户确认。 如:%s/old/new/gc 1.2.6 自动填充: 在输入模式下输入部分字符然后输入 ctrl +x 和 ctrl + n 用正在编辑的文件的内容作为关键字补齐。 ctrl +x 和 ctrl + f 以当前目录内的文件名作为关键字补齐。 ctrl +x 和 ctrl + o 以拓展名作为语法填充,以vim内建的关键词补齐。(必须要写对文件拓展名,比如.html,.php等等) 1.2.7 文档保存/退出: :wq 保存并退出。 :x 保存并退出。 ZZ 或 shift+zz 保存并退出。 ​ ​ :q 文档未编辑时,可以直接退出。 :q! 文档编辑过了,强行退出,不保存。 ​ :w 保存修改。 :w file2 将修改的文件保存到另外一个文件。 :r file3 读取当前目录下的file3内容到当前文档。 ​ :e! 一个文档修的地方太多了,最后自己都不知道哪里改对了,哪里改错了,可以使用重新加载文档,丢弃已做的改动。 ​ ​ :Sex 水平分割一个窗口,浏览文件系统,等同vim -o file1 file2; :Vex 垂直分割一个窗口,浏览文件系统,等同于vim -O file1 file2; ​ ctrl +w 连按两次w,可实现两个窗口的切换 % 快速匹配括号 gf 打开以光标所在字符串为文件名的文件。然后使用ctrl + ^ 可以再次回到源文件。 1.2.8 基本排版: < 先输入v进入可视化模式,向左缩进一个shiftwidth

  先输入v进入可视化模式,向右缩进一个shiftwidth

. 表示重复 u 撤销 ctrl + r 反撤销 :ce[nter]本行文字居中 :le[ft] 本行文字靠左 :ri[ght] 本行文字靠右 1.2.9 编辑多个文件: vim a.txt b.txt c.txt -p

  • 使用:next(:n)编辑下一个文件。
  • :2n 编辑下2个文件。
  • 使用:previous或:N编辑上一个文件。
  • 使用:wnext,保存当前文件,并编辑下一个文件。
  • 使用:wprevious,保存当前文件,并编辑上一个文件。 1.2.10 改变大小写: shift ~: 反转光标所在字符的大小写。 可视模式下的U/u:把选中的文本变为大写或小写。 v 可视字符 ,可以选择多个字符 ,再按U ,可以将小写切换为大写 V 可视行,可以选择多行,再按u,可以将大写切换为小写 1.2.11 文件加解密: vim -x file: 开始编辑一个加密的文件。 :X 为当前文件设置密码。 :set key= 去除文件的密码。

1.2.12 折叠: zf 创建折叠的命令,可以在一个可视区域上使用该命令,可缩减空间方便阅读; zo 打开折叠的文本 zc 收起折叠; zd 删除当前行的折叠,删除之后就不能再次折叠了; za 打开/关闭当前折叠; zfap 折叠光标所在的段;

1.3 常见设置: 1.3.1 智能缩进: 可以实现自动缩进与自动对齐。

:set si ​ 取消: :set nosi 1.3.2 自动对齐: 可以实现自动对齐,不可实现自动缩进。

:set ai ​ 取消: :set noai 1.3.3 显示行号: :set nu ​ 取消: :set nonu 1.3.4 语法高亮: :syntax on ​ 取消: :syntax off 1.3.5 显示换行符: :set list ​ 取消: :set nolist 1.3.6 设置文件格式: 如果在windows系统编辑好的脚本上传到centos系统执行,遇到报错,可以尝试修改文件格式。

设置为windows格式: :set fileformat=dos 设置为unix格式: :set fileformat=unix ​ 简写: :set ff=unix|dos 1.3.7 增量搜索: :set incsearch 1.3.8 显示命令: :set showcmd

普通模式: esc键 插入模式: i,a,c键 可视模式:

  • 普通可视按v
  • 行可视按V
  • 块可视按ctr+v

基于单词的移动: 普通模式下:

对字符进行查找:

gg 跳到文件第一行 Shift + g 跳到文件最后一行 按esc然后按:输入$回车就可以。跳到文件最后一行

多行批量缩进: v进入virtual模式,然后使用"=="进行缩进。

vi查找替换:

关于评论

评论前请填好“昵称”、“邮箱”这两栏内容,否则不会收到回复,谢谢!