VIM

内容摘要

  • vim介绍
  • vim颜色显示和移动光标
  • vim一般模式下的移动光标
  • 一般模式下复制剪切粘贴
  • 进入编辑模式
  • 命令模式
  • vim实践

 

一、vim介绍

  • vimvi的升级版本
  • vim是带有颜色显示的(与vi最明显的一个区别)
  • 使用命令yum install -y vim-enhanced
  • vim一共有三种模式:
  1. 一般模式:dd命令,把一行删除,复制某行粘贴等。
  2. 编辑模式:进入编辑模式需要按【i】这个按键过程,用键盘对文档字、符进行修改,还有回车、换行等。
  3. 命令模式:像less命令,/+关键字,可以查找等。把文档里的123改为456,可以批量操作的。包括:wq也是命令模式。

二、vim颜色显示和移动光标

  • 相同的文件在不同的目录下,就有可能会导致颜色不存在;在centos里面/etc/下面的文件往往是配置文件,在/etc/下面就会显示颜色,把它放到其他地方它就不会显示颜色,这是它的一个特性。
  • 但是/etc/fstab移到/tmp/passwd仍然有颜色,这是为什么呢?这是因为vim的颜色还与文件的具体内容有关系,不只如此,它的颜色还与文件名字有关。(如内容中添加#开头的内容或者文件名后缀更改为.sh结尾时原本没有颜色的内容也会显示颜色)
  • vim有自己的配置文件:/etc/vimrc
  • 在用户家目录下也可以配置vim的配置文件,默认是不存在的,例: /root/.vimrc

四、vim一般模式下的移动光标

  • 一般模式下移动光标:如图所示

VIM_第1张图片

  • 空格也是向右移动一个字符的,但是在空格键hlkj键前面加上数字,光标就会移动到你指定数字的行列去。

五、一般模式下复制剪切粘贴

VIM_第2张图片

  •  快捷键x表示向后删除一个字符,X表示向前删除一个字符
  •  快捷键n+x 向后删除n个字符
  • 快捷键dd 删除/剪切光标所在的那一行
  • 快捷键ndd(n为number缩写,即行数),删除/剪切光标所在行之后的n行
  • 快捷键yy 复制光标所在行
  • 快捷键nyy n为number缩写,即行数),从光标所在行开始,向下复制n行
  • 快捷键p 从光标所在行开始,向下粘贴已经复制或者粘贴的内容
  • 快捷键P(大写) 从光标所在行开始,向上粘贴已经复制或者粘贴的内容
  • 快捷键u 还原上一步操作(最多恢复50次);Ctrl+r反向恢复。
  • 快捷键vv后移动光标会选中指定字符,然后可以实现复制、粘贴等操作

六、进入编辑模式

  • 进入编辑模式:
  1. 可以进入到了可以编辑文本文档的一种模式。
  2. 不同的按键方式可以产生不同的作用。
  3. 快捷键 i 在当前字符前插入
  4. 快捷键 I在光标所在的行行首插入
  5. 快捷键o在当前行的下一行插入新的一行
  6. 快捷键O在当前行的上一行插入新的一行
  7. 快捷键a在当前字符后插入
  8. 快捷键A在光标所在行的行尾插入
  9. 在编辑模式中,判断一行是否是同一行,可以看右下角的行列提示,或者用上下键操控光标移动观看。

七、命令模式

  • 命令/word 向光标之后查找一个字符串word,按n向后继续搜索
  • 命令?word 向光标之前查找一个字符串word,按n向前继续搜索
  • 命令:n ,n2s/word1/word2/g 在n1-n2行之间查找word1并替换为word2,不加g则只替换每行的第一个 word1
  • 命令:1,$s/word1/word2/g  将文档中所有(不指定)的word1替换为word2,不加g则只替换每行的第一个word1
  • 特殊情况:需要替换的内容本身带有/号,用\对命令进行脱义,也可以用“#”或者“@”来代替“\”进行脱义。
  • 命令:w 保存文本
  • 命令:q 退出vim
  • 命令:w! 强制保存,在root用户下,即使文本只读也可以完成保存
  • 命令:q! 强制退出,所有改动不生效
  • 命令:wq 保存并退出
  • 命令:set nu 显示行号
  • 命令:set nonu 不显示行号
  • 当某些内容是高亮的时候,你不想看高亮时,可以输入命令:nohl
  • 命令:x在更改文件之后去操作的效果和:wq是一摸一样的。如果打开文件但没有操作过,使用:wq它会更改mtime更改你查看文件那一刻的时间,使用:x则不会更改mtimes

八、vim实践

  • 首先复制实验的文件:cp /etc/dnsmasq.conf  /tmp/1.txt
  1. 分别向下、向右、向左、向上移动6个字符(6j 6l 6h 6k)。
  2. 分别向下、向上翻两页(分别按两次ctrl+f和ctrl+b)。
  3. 把光标移动到第49行(49G)。
  4. 把光标移动到行尾,再移动到行首(Shift+4, Shift+6)。
  5. 移动到1.txt文件的最后一行(G)。
  6. 移动到文件的首行(gg)。
  7. 搜索文件中出现的“dnsmasq”,并数一下该字符串出现的次数(/dnsmsq 然后按n)。
  8. 把从第1行到第10行出现的dnsmasq替换成dns(:1,10s/dnsmasq/dns/g)。
  9. 还原上一步操作(u)。
  10. 把整个文件中所有的etc替换成cte(:1,$s/etc/cte/g)。
  11. 把光标移动到第25行,删除字符串 “ly”(25G 然后按l向右移动光标找到"ly"按v选中然后按x)。
  12. 还原上一步操作(u)。
  13. 删除第50行(50G dd)。
  14. 还原上一步操作(u)。
  15. 删除第37-42行的所有内容(37G 6dd)。
  16. 还原上一步操作(u)。
  17. 复制第48行的内容并粘贴到第52行下面(48G yy 52G p)。
  18. 还原上一步操作(u)。
  19. 复制第37-42行的内容并粘贴到第44行上面(37G 6yy 44G P)。
  20. 还原上一步操作(按u)。
  21. 把第37-42行的内容移动到第19行下面(37G 6dd 19G p)。
  22. 还原上一步操作(按u)。
  23. 把光标移动到首行,把第1行内容改为“#!/bin/bash”(先按gg把光标定位到第1行然后按字母A进入编辑模式同时>光标到行末尾进行修改操作完成后按ESC)。
  24. 在第1行下面插入新的一行,并输入“# Hello!”(按o进入编辑模式同时光标向下另起一行输入“# Hello!”)。
  25. 保存文档并退出(按Esc键,输入“:wq”)。

课堂笔记:

九、vim扩展

  • Vim编辑环境配置,涉及/etc/vimrc 和 ~/.vimrc。前者是全局配置,而后置只针对当前用户。
  • 打开/保存/退出/改变文件

快捷键

解释

:e [path to file]

打开一个文件

:w

存盘

:saveas [path to file]

另存为

:x、 ZZ 、:wq

保存并退出 (:x表示仅在需要时保存;ZZ不需要输入冒号并回车)

:X

设置密码保存并退出,使用此命令后cat 该文件会显示乱码,再次打开需输入密码

:q!

退出不保存

wq!

强制保存退出

:qa!

强行退出所有的正在编辑的文件,就算别的文件有更改。

:bn、 :bp

你可以同时打开很多文件,使用这两个命令来切换下一个或上一个文件。

vim编辑器的替换模式与可视模式:

  • 在一般模式下按键盘上的rR进入替换模式。如果按小r那么这时候就进入了替换模式,你下一个输入的字符会把你当前光标所在处的字符替换,然后自动退出替换模式。如果你按的是大R那么你下面输入的所有字符会把后面的字符依次替换,直到按退出替换模式。
  • 在一般模式下按键盘上的vV进入可视模式。如果是按小v那么这时候就时入了视图模式,这时候你移动光标会把你光标所在处到光标结尾处的所有字符选中,这时候可以进行复制,删除等操作。如果是按大V同样也是进入了视图模式,这时候移动光标会把光标所在行到光标结尾的行的所有内容选中,也可以进行复制,删除等操作。注意:使用在一般模式使用“ctrl+v”组合键可以进入块操作模式在这个模式下和可视模式差不多,但是选择的内容不同,大家可实际操作看看
  • 删除从光标所在处到行尾字符:在一般模式下输入大写“或者输入“d$
  • 删除从光标所在处到行首字符:在一般模式下输入大写“d^
  • 删除从光标所在行到文件末尾行:在一般模式下输入大写“dG
  • 删除指定范围内所有行例:删除10到15行的所有内容在一般模式下输入“:10,15d回车
  • 把正在编辑的文件另存为新文件例:把正在编辑的文件另存为到“/root/”下面并保存为1.txt在一般模式下输入“:w /root/1.txt
  • 把正在编辑的文件的第10行到第15行另存为1.txt并保存到root目录下在一般模式下输入“:10,15 w /root/1.txt
  • 把其它文件的内容导入到正在编辑的文件的光标所在处例:把“/root/1.txt” 文件的内容,导入到下在编辑的文件的第10行下面
  1. 首先在一般模式下按“10G把光标定位到第10行
  2. 然后按“o小写,当前行的下面另起一行,并进入插入模式
  3. 最后按键盘上的返回到一般模式,再输入“:r /root/1.txt回车
  • 正在编辑文件时,不退出文件仍可以运行linux命令,列:我下在编辑一个文件,但这时候我想查看“/root/1.txt” 文件的内容,但是我不想退出我正在编辑的文件,那么我们可以这样:在编辑模式下输入“:! cat /root/1.txt
  • 把命令的执行结果导入到正在编辑的文件的光标所在处,这题我们可以结合上面两题,在一般模式下输入“:r ! cat /root/1.txt
  • 查找替换的功能使用
  1. 例:在10到15行的行首增加“#”
  2. 在一般模式下输入“:10,15s/^/#/
  3. 例:在10到15行的行首去掉“#”
  4. 在一般模式下输入“:10,15s/^#//
  5. 例:在10到15行的行首增加“//”
  6. 在一般模式下输入“:10,15s/^/\/\//或者“:10,15s@^@//@或者“:10,15s#^#//#

注意:在上面所有命令的最后面都可以加g或者c一起配合使用,g的意思是行中出现的所有指定字符都替换,但是如果加了g那么前面就不能出现位置定义字符,反之前面出现的位置定义字符,那么后面就不可以出现g。在后面加c可以跟用户交互,在查找到符合命令的字符提示用户是否替换,需要用户确认,否则不需要确认

  • 把输入的指定字符替换为指定的字符,例:在编辑一个文档的时候,我要频繁的输入“abcdefghijklmnopqrstuvwxyz这样的连续字符串,这时候我想只输入一个或者一串指定字符就可以替换为刚才的字符,比如我指定输入“aming”系统就会自动把“aming”替换成“abcdefghijklmnopqrstuvwxyz
  1. 在一般模式下输入“:ab aming abcdefghijklmnopqrstuvwxyz”
  2. 然后回车,再进入编辑模式,当你输入“aming”的时候就会发现自动替换成了“abcdefghijklmnopqrstuvwxyz
  • 快捷键的定义,例:我想在一般模式下按键盘上的ctrl+b快捷键,会自动在光标所在行的行首插入“#”号,然后自动退出到一般模式:
  1. 在一般模式下输入“:map ctrl+v ctrl+b I # 然后回车,这时候在一般模式按键盘上的ctrl+b的时候就会在光标所在的行首插入“#”号了

注意:命令中ctrl+v和ctrl+b是键盘上的组合键,不是输入进去的字符,是需要按的组合键,其中第一个ctrl+v就照按,第二个ctrl+b是要定义的快捷键,根据自己需要的设置按。然后“I”的意思就是一般模式下的“I”进入插入模式并将光标移动到行首,然后接着输入“#”号,后面“”的意思是退出编辑模式

  • 同进编辑两个文件或者:
  1. 例:我现正在编辑1.txt文件,然后我想再打开root目录下的2.txt同时编辑,并把窗口上下水平分隔,一起显示在一般模式下输入“:new /root/2.txt
  2. 例:我现正在编辑1.txt文件,然后我想再打开root目录下的2.txt同时编辑,并把窗口左右垂直分隔,一起显示在一般模式下输入“:vsplit /root/2.txt

注意:在一般模式下按“ctrl+w组合键,再按左右,或者上下方向键,可以在不同窗口之间切换如果在一般模式下输入“:only那么只保留当前正在编辑的窗口,其它全关闭

  • 在vim查找关键字时不区分大小写:
  1. 在一般模式下输入“:set ic
  2. 如果想取消就输入“:set noic
  • 如何把文件设置成只读文件,只有强制保存时才能保存,在一般模式下输入“:set readonly
  • 把文件恢复到打开时的状态,在一般模式下输入“:e!
  • 配置文件的使用
  1. 以上那么多操作,像设置忽略大小写,设定快捷键,设定自动替换,等一些操作,当电脑重启后就没有了。这时候我们可以把这些命令写入配置文件,这样电脑重启后还是可以使用,我们有两种方法
  2. 第一种:所有用户都统一:修改“/etc/vimrc”文件,在末尾加入需要设置的命令,就是我红色标注的部分
  3. 第二种:只对当前用户:修改用户家目录下的“.vimrc”文件,注意有个点,这是隐藏文件,一般用户家下没有,需要自己手工创建

你可能感兴趣的:(笔记)