Vim/Vi 常用命令

来源:互联网 发布:tensorflow实战视频 编辑:程序博客网 时间:2024/05/17 07:23

Vim是从vi发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。 —— 维基百科

首先,vim下的工作模式有三种:
命令模式、插入模式、编辑模式

  • 命令模式:缺省进入的是命令模式,插入,移动之类的命令
  • 插入模式:在此模式下可以编辑文档,就像在记事本或者word中一样
  • 编辑模式:对文本进行操作做一些额外的设置,比如为文档设置行号,替换字符串,保存退出等;编辑模式下的命令执行完之后自动就回到命令模式了
    模式之间的切换如图:

vim工作模式切换

1. 创建并打开文件:
$ vi filename
小白注意:‘$’符号不是手动输入的,命令行中会自动给

以下是各种命令,必须在命令模式下输入

2. 插入命令:

命令 含义 a 在 光标后 插入文本 A 在 行末 插入文本 i 在 光标前 插入文本 I 在 本行开始 插入文本 o 在 光标下 插入新行 O 在 光标上 插入新行

3.定位命令:

命令 含义 k、向上箭头 向 移动 j、向下箭头 向 移动 h、向左箭头 向 移动 l、向右箭头 向 移动 $ 移至 行尾 0 移至 行首 H 移至 屏幕上 第一行 M 移至 屏幕上 中间行 L 移至 屏幕上 最后一行 gg 移至 文档 第一行 G 移至 文档 最后一行 nG 移至 文档 第n行 :n 移至 文档 第n行 命令 含义 备注 :set nu 在文档中设置行号 ①nu是number缩写②:代表进入编辑模式 :set nonu 在文档中取消行号 大部分取消命令都是在设置命令前加“no”

4.删除命令

命令 含义 x 删除光标所在 字符 nx 删除光标所在 处后n个 字符 dd 删除光标所在 ndd 删除 n行 (光标所在行为第一行) dG 删除光标所在 行到文本末尾 的内容 D 删除光标所在 处到行尾 的内容 :n1,n2d 删除 指定范围 行,包括n1和n2行,如(:44,50d)

5. 复制和剪切

命令 含义 yy、Y 复制 当前行 nyy、nY 复制 当前行以下n行 dd 剪切 当前行(看得到的效果就是删除,看不到的是同时又拷贝到了剪切板上) ndd 剪切 当前行以下n行 p、P 粘贴在当前光标 所在行(P)(原来内容向下移动) 或者 下一行(p)

6. 替换和取消命令

命令 含义 r 替换光标所在 字符(命令模式下,按一下r,再按想替换成的字符) R 从光标所在处开始替换,知道按Esc键终止 u 取消上一步操作(只要没有保存过文档,这个操作就可以一直做,类似于win下的撤退键,保存之后被写入内存就没法改了)

7. 搜索替换命令

命令 含义 /string 搜索指定字符串,默认严格区别大小写 :set ic 忽略大小写 n、N 搜索指定字符串的下一个出现位置(n从上往下,N从下往上) :%s/old/new/g 全文替换old字符串为new字符串(g代表不需要询问确认,c代表需要询问确认) :n1,n2s/old/new/g 在一定范围(第n1行到第n2行)内替换old字符串为new字符串

8. 保存退出命令

命令 含义 :wq write quit 保存后退出 shift+ZZ 等价于:wq :wq! 权限不够时强行保存退出,只有文件所有者和管理员root才可以 :q! 不保存退出 :w 保存不退出 :w test/a.bak 另存为

9. 应用技巧

(1):r !date 把date命令的执行结果导入到当前正在编辑的文件中光标所在处
命令拆分:

  • :r /etc/issue 把这个文件的内容导入到当前正在编辑的文件中光标所在处
  • :!命令 在vi中可以执行任何命令而不需要退出vi

(2)定义快捷键
:map 快捷键 触发命令

注意:下面快捷键写法^p不是先按一个^,再按p,有两种按法
① 先 ctrl+v ,再 ctrl+p
② ctrl+v+p

  • :map ^p I#< ESC>
    快捷键ctrl+p触发跳到行首进行插入模式(I),插入#(#),之后再退回到命令模式(< ESC>)(ESC 和 <之间没有空格,不加空格就被当成标签处理了,显示不出来,我就加了个空格,只为显示出来)

  • :map ^z address@qq.com
    快捷键ctrl+z触发将address@qq.com插入到光标所在处

  • :map ^B 0x
    ctrl+B触发删除行首,0是在命令模式下跳到行首,x是删除光标所在处字符

(3)连续行注释

  • :n1,n2s/^/#/g 在连续行(n1到n2)行首加上#,^代表行首
  • :n1,n2s/#//g 去掉连续行(n1到n2)的#,就是将#替换为空
  • #n1,n2s/^#//g 去掉连续行(n1到n2)行首的#
  • :n1,n2s/^/\/\//g \/使用的转义符,让/符号代表它本来的意思

(4)替换
:ab mymail mailAddress@qq.com
之后你输入的所有mymail都会自动变为mailAddress@qq.com,而之前的mymail并不会受到影响
:unab mymail mailAddress@qq.com
取消这一设置

10. 永久保存
vi中在某个文档下的设置不会被保存,在你退出文档之后会被自动取消,要想保存,需要写入vi配置文件中,配置文件存放在用户宿主目录下(非root用户默认在/home/userName目录下,我们可以直接用~表示)
vi ~/.vimrc
写入配置文件时可以省略命令前面的“:”

好啦,以上命令基本上够日常操作使用

原创粉丝点击