vim编辑器

vim编辑器

文本编辑器,字处理器

nano、sed

vi:Visual Interface(可视化接口)

vim:VI Improved

模式编辑器、全屏编辑器

一:打开文件

# vim /path/to/somefile

  • vim +# /path/to/somefile 打开/path/to/somefile,并定位于文件第#行
    • 例如1:打开文件/etc/inittab,光标在 18 行

      # vim +18 /etc/inittab

  • vim + /path/to/somefile  打开/path/to/somefile,并定位于该文件的底部
    • 例如1:打开文件/etc/inittab,光标在 最后一行

      # vim + /etc/inittab

  • vim +/PATTERN:打开文件,定位至第一次被PATTERN匹配到的行的行首
    • 如:vim +/:initdefault  /etc/inittab

编辑模式/命令模式:复制、粘帖、删除行...

输入模式:输入内容到文件

末行模式:文件管理命令

打开vim编辑器,默认处于编辑模式。

模式之间是可以相互转换的。

编辑 --> 输入

  • i:在当前光标所在字符的前面,转换为输入模式;
  • a:在当前光标所在字符的后面,转换为输入模式;
  • o:在当前光标所在行的下面,新建一行,转换为输入模式;

大写字母

  • I:在当前光标所在行的行首,转换为输入模式;
  • A:在当前光标所在行的行尾,转换为输入模式;
  • O:在当前光标所在行的上面,新建一行,转换为输入模式;

输入 --> 编辑

  • ESC

编辑 --> 末行模式(只能从编辑模式进入)

  • : 输入冒号即可

末行模式可以执行的命令:

  • 10d:删除文件中的第十行
  • 10,20d:删除文件中的第十行到第二十行;
  • set nu:显示行号
  • ! ls /etc/:执行shell命令,不影响当前文件编辑

末行模式 --> 编辑

  • ESC,ESC

输入模式到末行模式不能直接转换;

二:关闭文件

  • 末行模式关闭文件
    • :q:退出,不保存,如果已经编辑了文件内容,这样无法退出,会提示你文件已经发生了改变,让你确认是否保存
    • :wq:保存并退出
    • :q!:不保存退出
    • :w:保存,不退出
    • :w!:强行保存只读文件(只读文件对管理员root是不生效的,管理员可以使用w!强行保存文件)
    • :wq -- :x
  • 编辑/命令模式下退出文件
    • ZZ:保存退出(不用切换模式,就可以保存退出)

三:移动光标(编辑/命令模式)

  • 逐字符移动:可以用上下左右键,也可以:
    • h:左
    • l:右
    • j:下
    • k:上
    • 数字加上上面的移动键,可以向对应方向移动 n 个字符或行
  • 逐单词移动
    • w:向后移动到下个单词的词首
    • e:向后跳到当前或下一个单词的词尾
    • b:向前跳至当前或前一个单词的词首
    • 上述命令都支持加上数字,如:3w,4b,可以实现移动 n 个单词
  • 行内跳转/移动
    • 0:行首,绝对行首
    • ^:行首,行首的第一个非空白字符,相对行首
    • $:行尾,绝对行尾
  • 行间跳转
    • G:跳至最后一行
    • #G:向下跳至第#行行首

末行模式下跳转:直接给出行号,回车即可

四、翻屏操作

  • Ctrl+f:向下翻一屏,向文件尾部翻一屏
  • Ctrl+b:向上翻一屏,向文件首部翻一屏
  • Ctrl+d:向下翻半屏
  • Ctrl+u:向上翻半屏

五、删除单个字符

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

六、删除命令d

  • d命令可以结合光标跳转命令一起使用,实现不同的删除效果。如:
    • d$:删除当前光标处到行尾的内容
    • d0:删除当前光标处到行首的内容
    • dw:逐个单词删除
    • 3dw:一次删除三个单词
    • #de:
    • #db:
    • dd:删除当前光标所在行
    • #dd:删除从光标所在行向下删除#行
    • 删除第10行到第20行(末模式下:1,8d)
  • 末行模式下删除指定行
    • :.,+5d:末行模式下删除从当前行开始到向下的5行,一共删了6行
    • (.表示当前行,$表示最后一行,+#表示想下的#行);
    • 当前行到倒数第三行:.,$-3
    • .:表示当前行
    • $:表示最后一行
    • +#:表示向下的#行

七、粘贴命令:p

  • 删除的内容并没有立即清除,而是保存在内存缓冲区中的。
  • 最后一次删除的内容,可以被粘贴到任意指定的地方,可以粘贴多次;
  • P:
    • 如果删除的或复制的为整行内容,则粘贴至光标所在处的下放;
    • 如果复制或删除的内容为非整行,则粘贴至光标所在字符的后面;
  • p:
    • 如果删除的或复制的为整行内容,则粘贴至光标所在处的上放;
    • 如果复制或删除的内容为非整行,则粘贴至光标所在字符的前面;

八、复制命令:y

  • 用法同d命令
  • yy:复制一行
  • 3yy、y0、y$...

九、先删除内容,再转换为输入模式(即:替换或修改)

  • c:用法同d命令

十、替换命令

  • r:替换单个字符
  • R:进入替换模式,类似insert键。ESC退出替换模式

十一、撤销编辑

  • u:undo,撤销前一次的编辑操作,可以连续使用u,撤销前n次的编辑操作
  • 注意:vi或vim只在内存缓冲区中保存最近50次的编辑操作,也就是说我们最多只能撤销最近50次的编辑操作
  • #u:直接撤销最近#次的编辑操作。

撤销撤销:撤销/还原上一次的撤销操作:Ctrl+r

十二、重复前一次的编辑操作

  • .:点,功能强大的点

十三、可视化模式

  • v:按字符选取,选取后可以执行上面所有的编辑操作(d删除,y复制等)
  • V:按矩形块选取,按行选取

十四、查找

  • /PATTERN:从文件首部到尾部查找
  • ?PATTERN:从当前光标所在行,到文件首部,倒着查找
    • n:下一个,往下跳转下一个
    • N:上一个,往上跳转下一个

十五、查找并替换

在末行模式下使用s命令,用法与sed一模一样。

  • 语法:ADDR1,ADDR2s@PATTERN@STRING@gi
    • @:分隔符
    • s:查找
    • g:替换
    • i:忽略字符大小写

例如:将文档中从当前行(.)开始到文档底部的所有小写的he替换为大写的HE

:.,$-1s/he/HE/g

全文替换:

:1,$ 或者 :%

1,$,表示从第一行到最后一行,百分号也是指全文。

练习题:

将/etc/yum.repos.d/server.repo文件中的ftp://instructor.example.com/pub替换为http://172.16.0.1/yum

key

%s/ftp:\/\/instructor\.example\.com\/pub/http:\/\/172.16.0.1\/yum/gi

%s@ftp://instructor\.example\.com\/pub@http://172.16.0.1/yum@gi

十六、如何打开多个文件

vim FILE1 FILE2 FILE3

:next:切换至下一个文件

:prev:切换至前一个文件

:last:切换至最后一个文件

:first:切换至第一个文件

vim rc.local init

默认显示第一个文件;

切换到下个文件:next

切换到上个文件:prev(注意:切换到上个文件之前,必须保存编辑过的这个文件,否则切换不过去的)

退出:全部退出

:qa

:qall

十七、分屏显示一个文件

看着前面的内容来编辑后面的内容

Ctrl+w,s :水平拆分窗口

Ctrl+w,v :垂直拆分窗口

切换窗口:Ctrl+w,ARROW(上下左右方向箭头)

退出:

:q 退出一个窗口

:qa 全部退出,关闭所有窗口

--------------------------------------------------------

水平拆分窗口:

Ctrl+w,松开后,再按 s

Ctrl+w+向下/上的箭头,切换光标到上/下面的窗口编辑。

垂直拆分窗口:

Ctrl+w,松开后,再按 v

十八、分窗口显示多个文件

窗口1显示文件1,窗口2显示文件2

水平分割显示,如:vim -o FILE1 FILE2

垂直分割显示,如:vim -O FILE1 FILE2

十九、将当期文件的部分内容另存为另外一个文件

末行模式下使用w命令

:w

:w  /path/to/somewhere

:ADDR1,ADDR2w  /path/to/somewhere

二十、将另外一个文件内容填充在当前文件中(合并两个文件)

:r /path/to/somefile

二十一、跟shell交互

末行模式下输入:

:! COMMAND

#COMMAND不支持alias别名命令

二十二、高级话题

1、显示或取消显示行号

:set number -- set nu

:set nonu

2、忽略或区分字符大小写

:set ic

:set ignorecase

:set noic

:set noignorecase

3、设定自动缩进(写脚本的时候很有用)

:set autoindent

:set ai

:set noai

4、设定高亮显示(查找到的文本高亮显示)

:set hlsearch

:set nohlsearch

5、语法高亮

:syntax on

:syntax off

二十三、vim配置文件

全局:vim /etc/vimrc

局部(用户级):vim ~/.vimrc

关于vim的练习题:

系统自带的vimtutor,每天做一遍,每次控制在半小时内搞定,就成了。


Comments are closed.