linux shell 笔记之vi操作

来源:互联网 发布:linux获取cpu核心数 编辑:程序博客网 时间:2024/05/09 08:47

推荐vim的插件

1. https://github.com/ma6174/vim

2. https://github.com/amix/vimrc


vi/vim的工作模式有三种: 普通模式、命令模式和编辑模式

模式切换:

  • vi默认进入的模式时普通模式,在普通模式下输入 i(插入)、c(修改)、o(另起一行) 命令时进入编辑模式;
  • 无论在何种模式下,按 esc 键都会退回到普通模式;
  • 在普通模式下输入冒号(:)可以进入命令模式。输入完命令按回车,命令执行完后会自动退回普通模式。

删除

<dd>           删除一行
<ndd>         删除n行
<d>+down  删除光标当前行和下一行
<d$>           删除光标至行尾的所有字符
<D>            同<d$>
<x>             删除光标所在的字符


复制

<yy>        复制一行
<nyy>      复制n行
<yw>       将光标所在单词拷入剪贴板
<y$>        将光标至行尾的字符拷入剪贴板
<Y>         同<y$>

:12,24y     表示拷贝第12 行到第24 行之间的内容.
:12,y         表示拷贝第12 行到光标所在行之间的内容.
:,24y         表示拷贝光标所在行到第24 行之间的内容. 删除类似.

1. 在编辑模式下,按住CTRL+Y不放手可以快速复制上一行
2. 快速补全已输入过的单词:
    (例):如果已经在文本中输入过hello, 再次输hello的时候,在输到he的时候
     按CTRL_P就可补全hello, CTRL_N为向后搜索。

粘贴

<p>: 粘贴



替换

:s/old/new/g=====>当前行的old被替换
:50,100s/old/new/g====>50到100行的old被替换为new
:1,$s/old/new/g=======>全部的old被替换
:%s/old/new/g====>全部的old替换为new %s等同于1,$s表示全局的old都会被替换

:g/string/s//new/g 等价于 :%s/string/new/g

注意:在每一个g后面加上c,会出现是否替换的确认

1.应用删除^M
^M在vim的输入方法是ctrl+V,会得到^,此时再按回车.会得到^M
因此把全文件所有^M换成一个空格的语句是:%s/^M/ /g
2.在shell脚本中加注释
//在第5行到第10行的首字符加上#号注释
:5,10s/^/#/g


其他


 `.          (就是反单引号+.)此命令相当强大, 它移动光标到上一次的修改点.
 '.          (就是单引号+.)此命令相当强大, 它移动光标到上一次的修改行.
 ctrl+f     (即ctrl 键与f 键一同按下) 本命令即page down.
 ctrl+b    (即ctrl 键与b 键一同按下, 后同) 本命令即page up.
 <gg>     移动光标到文档首行.
 <G>      移动光标到文档尾行.