博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
VIM 使用
阅读量:6149 次
发布时间:2019-06-21

本文共 6741 字,大约阅读时间需要 22 分钟。

hot3.png

VIM 介绍

  • vim是vi的升级版本,vi支持的vim同样支持,但是vim是支持颜色显示的。(下图是以vim显示的,可以看到明显区别)

输入图片说明

  • vim 也是有一般模式,编辑模式,命令模式的

一般模式:可以进行复制,删除等操作

编辑模式:就是按 “i” 或者 “a” ,就是正常的编辑文档了。

命令模式:可以进行搜索关键词,和查找替换等操作,或者保存退出,强制退出等

vim的安装

  • 默认系统不自带vim,需要手动安装。安装方法:yum install -y vim-enhanced

 

 

 

vim颜色显示与光标移动

vim 显示颜色的改变

  • vim查看一个同一个文件的颜色显示可能会收到所在目录的变化而变化。下面试一下 /etc/passwd这个文件来看

输入图片说明

然后把这个文件cp到/tmp/下,然后再vim看下:

[root@localhost ~]# cp /etc/passwd  /tmp/[root@localhost ~]# vim /tmp/passwd

输入图片说明

  • vim显示颜色改变也会根据文件内容而改变,现在往/tmp/passwd 文件里面加上以#号开头的文件测试一下:

输入图片说明

可以看到虽然变化不大,但是也是有颜色显示了。

  • vim显示颜色改变还会根据文件的名字而改变。比如改动文件名字后缀。把/tmp/passwd 后面加上.sh

输入图片说明

颜色又以另一种方式显示了。

  • 实际上在/etc/vimrc这个配置文件里是规定了vim的一些配色方案的。了解即可。

输入图片说明

vim的光标移动

  • h 或者向左的方向键 -----------------------光标向左移动一个字符
  • l 或者向右方向键 --------------------------光标向右移动一个字符
  • k 或者向上方向键 -------------------------光标向上移动一个字符
  • j 或者向下方向键 --------------------------光标向下移动一个字符
  • Ctrl+f或者PageUp键 -----------------------屏幕向前移动一页
  • Ctrl+b或者PageDown键-------------------屏幕向后移动一页
  • 数字0或者Shift+6 --------------------------移动到本行行首
  • Shift+4 ----------------------------------------移动到本行行尾
  • gg ----------------------------------------------移动到首行
  • G -----------------------------------------------移动到尾行
  • nG(n是任意数字) ---------------------------移动到第n行

方向键的移动也是可以添加数字的,比如5h ,就是从当前光标出向左移动5格。3k就是从当前光标处向上移动三格。


 

 

 

一般模式下复制粘贴

  • x和X ---------------------------------------x表示向后删除一个字符,X表示向前删除一个字符
  • nx -----------------------------------------向后删除n个字符
  • dd -----------------------------------------删除/剪切光标所在的那一行
  • ndd ---------------------------------------删除/剪切光标所在行之后的n行
  • yy ----------------------------------------复制光标所在行
  • p -----------------------------------------从光标所在行开始,向下粘贴已经复制或粘贴的内容
  • P -----------------------------------------从光标所在行开始,向上粘贴已经复制或粘贴的内容
  • nyy ---------------------------------------从光标所在行开始,向下复制n行
  • u -----------------------------------------还原上一步操作(最多可以恢复50次)
  • Ctrl+r -----------------------------------还原下一步操作,(像浏览器里的左返回,右返回的右返回)
  • v -----------------------------------------按v后移动光标会选中指定字符,然后可以实现复制,粘贴等操作。

 

 

 

vim 的三种常用模式

一般模式

  • 移动光标位置

  • 删除,复制,粘贴

进入编辑模式

  • "i" 当前字符前插入
  • "I" 在光标所在行的行首插入
  • "a" 在当前字符后插入
  • "A" 在光标所在行尾插入
  • "o" 在当前行的下一行插入新的一行
  • "O" 在当前行的上一行插入新的一行
  • "Esc键" 退出编辑模式

进入命令模式

  • 退出编辑模式到一般模式后按“ : ”或者“ / ”键即可进入命令模式

用法:

  • /word 在光标之后查找一个字符串word,按n向后继续搜索

输入图片说明

输入图片说明

  • ?word 在光标之后查找一个字符串word,按n向后继续搜索(同/word)
  • :n1,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 -----------不显示行号
  • ZZ --------------------保存退出
  • ZQ --------------------不保存退出,q表示放弃
  • :x ---------------------保存退出,如果内容未改,不会更改时间戳

":x" 和 ":wq" 的区别如下:

(1) :wq 强制性写入文件并退出(存盘并退出 write and quite)。即使文件没有被修改也强制写入,并更新文件的修改时间。

(2) :x 写入文件并退出。仅当文件被修改时才写入,并更新文件修改时间;否则不会更新文件修改时间。 这两者一般情况下没什么不一样,但是在编程方面,对编辑源文件可能会产生重要影响。因为文件即使没有修改,":wq" 强制更新文件的修改时间,

这样会让 make 编译整个项目时以为文件被修改过了,然后就得重新编译链接生成可执行文件。这可能会产生让人误解的后果,当然也产生了不必要的系统资源花销。不过像是版本控制的软件一般首选还是比较文件内容,修改时间一般不加以理会。


vim里常用的快捷键

1,注释所有的行:ctrl+v j/k+ shift +i

2,查看光标当前的man手册 shift+k

3,d+f+字符

4,选中面积 v+t+字符

5,在vim里面删除光标后的所有字符 shift+d

6,删除当前光标上的单词 d+i+w

7,选中当前光标上的单词 v+i+w


vim 粘贴代码自动缩进导致全乱了怎么办

  • 用vim打开一个空白文档,然后把已经复制的代码给粘贴进来,发现它有自动缩进功能,最终导致粘贴的文本一行比一行靠右,看起来乱成一团。比较快的解决办法是,在粘贴文档前,在命令行模式下,输入
:set noai nosi
  • 有时候,这样的方法不好用,可以尝试这种:
:set paste

客户端putty, xshell连接linux中vim的小键盘问题

在putty上用vi的时候,开NumLock时按小键盘上的数字键并不能输入数字,而是出现一个字母然后换行(实际上是命令模式上对应上下左右的键)。解决方法

  • 选项Terminal->Features里,找到Disable application keypad mode,选上就可以了

  • 在xmanager 4 中的xshell也有小键盘问题 解决方法为

修改session 属性 -> 终端->VT模式->初始数字键盘模式

选择 设置为普通。


Linux用vim/vi给文件加密和解密

一、 利用 vim/vi 加密:

优点:加密后,如果不知道密码,就看不到明文,包括root用户也看不了;

缺点:很明显让别人知道加密了,容易让别人把加密的文件破坏掉,包括内容破坏和 删除;

vi编辑器相信大家都很熟悉了吧,vi里有一个命令是给文件加密的,举个例子吧:

1) 首先在root主目录/root/下建立一个实验文件text.txt:

[root@www ~]#  vim/vi  text.txt

2) 进到编辑模式,输入完内容后按ESC,然后输入:X(注意是大写的X),回车;

3) 这时系统提示让你输入密码,2次,如下所示:

输入密码: *******请再输入一次: *******

4) 保存后退出,现在这个文件已经加密了;

5) 用cat或more查看文件内容,显示为乱码;用 vim/vi 重新编辑这个文件,会提示输入密码,如果输入的密码不正确,同样会显示为乱码! 注意:文件加密后,千万别忘了密码!

  • 二、 解密用vi加密的文件(前提是你知道加密的密码):

1) 用 vim/vi 打开文件如text.txt,要输入正确的密码,然后在编辑时,将密码设置为空,方法是输入下面的命令:

:set key=

然后直接回车,保存文件后,文件已经解密了。

2) 或者这样也行:

在正确打开文件后用 “:X” 指令,然后给一个空密码也可以。保存用“wq!”保存。 两种方法实际上效果是一样的。


vim编辑器里面一些不为人知的操作

1.vim编辑器的替换模式与可视模式 在一般模式下按键盘上的r和R进入替换模式。如果按小r那么这时候就进入了替换模式,你下一个输入的字符会把你当前光标所在处的字符替换,然后自动退出替换模式。如果你按的是大R那么你下面输入的所有字符会把后面的字符依次替换,直到按退出替换模式。

在一般模式下按键盘上的v和V进入可视模式。如果是按小v那么这时候就时入了视图模式,这时候你移动光标会把你光标所在处到光标结尾处的所有字符选中,这时候可以进行复制,删除等操作。如果是按大V同样也是进入了视图模式,这时候移动光标会把光标所在行到光标结尾的行的所有内容选中,也可以进行复制,删除等操作。

注意:使用在一般模式使用“ctrl+v”组合键可以进入块操作模式 在这个模式下和可视模式差不多,但是选择的内容不同,大家可实际操作看看 2.删除从光标所在处到行尾字符

在一般模式下输入大写“D”或者输入“d$”

3.删除从光标所在处到行首字符

在一般模式下输入大写“d^”

4.删除从光标所在行到文件末尾行

在一般模式下输入大写“dG”

5.删除指定范围内所有行

例:删除10到15行的所有内容 在一般模式下输入“:10,15d”回车

6.把正在编辑的文件另存为新文件

例:把正在编辑的文件另存为到“/root/”下面并保存为1.txt 在一般模式下输入“:w /root/1.txt” 例:把正在编辑的文件的第10行到第15行另存为1.txt并保存到root目录下在一般模式下输入“:10,15 w /root/1.txt”

7.把其它文件的内容导入到正在编辑的文件的光标所在处

例:把“/root/1.txt” 文件的内容,导入到下在编辑的文件的第10行下面 首先在一般模式下按“10G”把光标定位到第10行 然后按“o”小写,当前行的下面另起一行,并进入插入模式 最后按键盘上的返回到一般模式,再输入“:r /root/1.txt”回车

8.正在编辑文件时,不退出文件仍可以运行linux命令

列:我下在编辑一个文件,但这时候我想查看“/root/1.txt” 文件的内容,但是我不想退出我正在编辑的文件,那么我们可以这样 在编辑模式下输入“:! cat /root/1.txt”

9.把命令的执行结果导入到正在编辑的文件的光标所在处

这题我们可以结合上面两题,在一般模式下输入“:r ! cat /root/1.txt”

10.查找替换的功能使用

例:在10到15行的行首增加“#” 在一般模式下输入“:10,15s/^/#/” 例:在10到15行的行首去掉“#” 在一般模式下输入“:10,15s/^#//” 例:在10到15行的行首增加“//” 在一般模式下输入“:10,15s/^”或者“:10,15s@^@//@”或者“:10,15s#^#//#”

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

11.把输入的指定字符替换为指定的字符

例:在编辑一个文档的时候,我要频繁的输入“abcdefghijklmnopqrstuvwxyz”这样的连续字符串,这时候我想只输入一个或者一串指定字符就可以替换为刚才的字符,比如我指定输入“aming”系统就会自动把“aming”替换成“abcdefghijklmnopqrstuvwxyz” 在一般模式下输入“:ab aming abcdefghijklmnopqrstuvwxyz”然后回车,再进入编辑模式,当你输入“aming”的时候就会发现自动替换成了“abcdefghijklmnopqrstuvwxyz”

12.快捷键的定义

例:我想在一般模式下按键盘上的ctrl+b快捷键,会自动在光标所在行的行首插入“#”号,然后自动退出到一般模式 在一般模式下输入“:map ctrl+v ctrl+b I # ”然后回车,这时候在一般模式按键盘上的ctrl+b的时候就会在光标所在的行首插入“#”号了

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

13.同进编辑两个文件或者

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

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

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

15.在vim查找关键字时不区分大小写

在一般模式下输入“:set ic” 如果想取消就输入“:set noic”

16.如何把文件设置成只读文件,只有强制保存时才能保存

在一般模式下输入“:set readonly”

17.把文件恢复到打开时的状态

在一般模式下输入“:e!”

18.配置文件的使用 以上那么多操作,像设置忽略大小写,设定快捷键,设定自动替换,等一些操作,当电脑重启后就没有了。这时候我们可以把这些命令写入配置文件,这样电脑重启后还是可以使用,我们有两种方法 第一种:所有用户都统一 修改“/etc/vimrc”文件,在末尾加入需要设置的命令,就是我红色标注的部分 第二种:只对当前用户 修改用户家目录下的“.vimrc”文件,注意有个点,这是隐藏文件,一般用户家下没有,需要自己手工创建

转载于:https://my.oschina.net/u/3852961/blog/1818134

你可能感兴趣的文章
关于程序的单元测试
查看>>
mysql内存优化
查看>>
都市求生日记第一篇
查看>>
Java集合---HashMap源码剖析
查看>>
SQL优化技巧
查看>>
thead 固定,tbody 超出滚动(附带改变滚动条样式)
查看>>
Dijkstra算法
查看>>
css 动画 和 响应式布局和兼容性
查看>>
csrf 跨站请求伪造相关以及django的中间件
查看>>
MySQL数据类型--与MySQL零距离接触2-11MySQL自动编号
查看>>
生日小助手源码运行的步骤
查看>>
Configuration python CGI in XAMPP in win-7
查看>>
bzoj 5006(洛谷 4547) [THUWC2017]Bipartite 随机二分图——期望DP
查看>>
CF 888E Maximum Subsequence——折半搜索
查看>>
欧几里德算法(辗转相除法)
查看>>
面试题1-----SVM和LR的异同
查看>>
MFC控件的SubclassDlgItem
查看>>
如何避免历史回退到登录页面
查看>>
《图解HTTP》1~53Page Web网络基础 HTTP协议 HTTP报文内的HTTP信息
查看>>
unix环境高级编程-高级IO(2)
查看>>