(Linux 学习)Linux之路——装X利器Vi Vim

先说目的和背景

今天配置服务器的时候,使用Linux编辑配置文件的时候,发现Vim编辑器各种不熟练。经常发现“卧槽,这个怎么没了?”“这个怎么编辑不了?”“这个怎么退出?”,突然觉得对于一个经常使用的操作系统,连个编辑器都使用不熟练。这还怎么成为高手呢。于是专门回头学习了一下Linux中的Vim的使用。大家都知道,Vim是强大的编辑器,从功能来讲Vim不输任何的编辑器。Vim作为Linux中的编辑器,并不等同于Windows中的NotePad。相比于Vim来说,Windows的记事本就是个渣渣。之前学习Linux的时候也学习过Vim的使用。但是不系统也不成体系。我认识到这样不能够完全掌握Linux。更别说精通了。所以建立了这样的一个文集来专门学习一下Linux的各方面知识。不止是Vim,在今后的码路上遇到任何关于Linux中的不熟练或者不明白的地方。都要系统性的回顾一下。所谓“温故而知新”。

Vi

VI:Visual Interface

模式

Vim的模式分为:

  • 编辑模式(命令模式)
    在刚开始进入Vim是处于的模式就是编辑模式,在编辑模式中输入的任何字符都会作为命令
  • 输入模式
    在输入模式中,所有输入的字符都作为内容
  • 末行模式
    在编辑模式中通过 :可以进入末行模式,末行模式可以执行一些特定的功能

模式的转换

编辑模式--->输入模式

  • i: 在当前光标所在字符的前面,转为输入模式
  • a: 在当前光标所在字符的后面,转为输入模式
  • o:在当前光标所在行的下方,新建一行,并转为输入模式
  • I 在当前光标所在行的行首,转换为输入模式
  • A 在当前光标所在行的行尾,转换为输入模式
  • O 在当前光标所在行的上方,新建一行,并转为输入模式

输入模式--->编辑模式

  • ESC 键转为编辑模式

编辑模式---> 末行模式


  • 末行模式--->编辑模式
  • ESC

打开文件

  • vim+#:打开文件,并定位于第#行
vim +5 /etc/hosts  打开hosts文件并编辑第5行
  • vim + 打开文件,定位至最后一行
vim + profile 打开文件并编辑最后一行
  • vim + /PATTERN:打开文件,定位至第一次被PATTERN匹配到的行的行首
vim +/PATH profile 打开文件并定位到关键词PATH第一次出现的行的行首

n:定位下一个关键字位置
N:定位上一个关键字的位置

关闭文件

末行模式下关闭文件

  • :q 退出
  • :wq 保存并退出
  • :q! 不保存并退出
  • :w 保存
  • :w! 强行保存
  • :wq -->:x

编辑模式下退出

  • ZZ:保存并退出

移动光标

编辑模式

逐字符移动
  • h:左
  • l: 右
  • j: 下
  • k: 上
  • #h 移动#个字符
以单词为单位移动
  • w:移动到下一个单词的词首
  • e:挑至当前或下一个单词的词尾
  • b:跳至当前或前一个单词的词首
行内跳转
  • 0:绝对行首
  • ^:行首的第一个非空白字符
  • $:绝对行尾
行间跳转
  • #G:跳转至第#行
  • G最后一行
    在末行模式下,直接给出行号即可

翻屏

  • ctrl+f 向下翻屏
  • ctrl+b 向上翻屏
  • ctrl+d 向下翻半屏
  • ctrl+u 向上翻半屏

删除单个字符

  • x:删除光标所在处的单个字符
  • #x:删除光标所在处及向后的共#个字符

删除命令

  • d命令跟跳转命令组合使用
    • dd 删除当前光标所在行
    • #dd:删除包括当前光标所在行内的#行
  • 末行模式下
    StartADD,EndADDdr
    .:表示当前行
    $:最后一行
    +#:向下的#行
    -#:向上的#行
.,.+3d 删除当前光标所在行到之后的3行,包括光标所在行
.,$-1d 删除除去最后一行的所有内容

复制命令 y

用法和d相同

  • 编辑模式
3y 复制光标所在的行后的3行

粘贴命令 p

p:如果删除或复制为整行内容,则粘贴至光标所在行的下方,如果复制或删除的内容为非整行,则粘贴至光标所在字符的后面
P:如果删除或复制为整行内容,则粘贴至光标所在行的上方,如果复制或删除的内容为非整行,则粘贴至光标所在字符的前面

查找命令

  • 末行模式下
    /PATTERN 向下查找
    ?PATTERN 向上查找
    * n 前一个
    * N后一个

替换 r

R:进入替换模式

查找并替换

  • 末行模式
    在末行模式下使用S命令uu
  • 语法规则
    ADDR1,ADDR2s@PATTERN@string@gi 从第几行到第几行@s表达式@要替换的字符@g(全部替换)i(忽略大小写)
  • % 表示全文
  • ^ 第一行
  • $ 最后一行
* 将文本中的所有after替换为before
:1,$s@after@before@g  第一行开始到最后一行替换@after@before@全部替换

撤销命令 u

  • u:撤销前一次的编辑操作
    * 连续u命令可撤销此前的n次编辑操作
    * #u 直接撤销最近#次编辑操作
    撤销最近一次撤销操作 ctrl+r

编辑多个文件

语法格式:vim FILE1 FILE2 FILE3

  • :next 切换至下一个文件
  • :prev 切换至前一个文件
  • :last 切换至最后一个文件
  • :first 切换至第一个文件
  • 退出
  • :qa 全部退出

分屏显示一个文件

  • Ctrl+w,s:水平拆分窗口
  • Ctrl+w,v:垂直拆分窗口
  • Ctrl+w,ARROW 在窗口之间切换光标
    : qa 关闭所有窗口

分窗口编辑多个文件

  • vim -o:水平分割显示
  • vim -O:垂直分割显示

将当前文件中部分内容另存为另外一个文件

  • 末行模式下
    :w
  • 语法格式
    :ADDR1,ADDR2w /path/to/somewhere

将另外一个文件的内容填充到当前文件中

:r /path/to/somefile

跟shell交互

在正在编辑文件的时候可能需要执行一些外部的命令,比如:正在编辑文件时想要在外部目录创建一个文件
:!COMMAND

显示行号

末行模式下

  • set number 显示行号
  • set nu 显示行号
  • set nonu 不显示行号
    但是显示行号仅限本次操作,如果需要在编辑时默认显示行号,需要修改vi的配置文件
* vi 配置文件路径
vi /etc/virc 
将virc文件中添加
set nu 
保存退出
这样默认就会显示行号

忽略或区分大小写

末行模式

  • set ignorecase
  • setic
  • set noic 取消显示

设定自动缩进

  • set autoindent
  • set ai
  • set noai 取消自动缩进

查找到的文本高亮显示或取消

  • :set hlsearch
  • :set nohlsearch

语法高亮

  • :syntax on
  • :syntax off

配置文件

  • vi 配置文件
    /etc/virc
  • vim配置文件
    /etc/vimrc

Vim

在编辑方面Vi和Vim是基本相同的,但是Vim对于构建和编程方面具有更好的拓展性和支持,鉴于自己在Linux方面过于小白,先熟练了编辑功能再来学习Vim的强大

猜你喜欢

转载自blog.csdn.net/weixin_34392843/article/details/87638751