编辑器之神 vim

vi简介

  vi是“Visual interface”的简称,它在Linux上的地位就仿佛Edit程序在DOS上一样。它可以执行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制。vi不是一个排版程序,它不象Word或WPS那样可以对字体、格式、段落等其他属性进行编排,它只是一个文本编辑程序。 vi没有菜单,只有命令,且命令繁多

Vi有三种基本工作模式

  + 命令模式

  + 文本输入模式

  + 末行模式

vim基础操作

  vim是从 vi 发展出来的一个文本编辑器 。代码补完、编译及错误跳转等方便编程的功能特别丰富

      Esc:从插入模式或末行模式进入命令模式

  插入

  i        插入光标前一个字符

  I        插入行首

  a        插入光标后一个字符

  A         插入行未

  o(小写字母o) 向下新开一行,插入行首

      O(大写字母O)  向上新开一行,插入行首

 

  光标移动

  ^         移动到光标所在行的行首

  $         移动到光标所在行的行尾

  gg       光标移动文件开头

  G         光标移动到文件末尾

  w(word)   向后移动一个单词

  b         向前移动一个单词

  M(middle)  光标移动到屏幕中间

  L          光标移动到屏幕最后一行的行首

  {        按段移动(以空行为分段),上移

  }        同上,下移

  Ctrl + d      向翻半屏

  Ctrl + u      向翻半屏

  Ctrl + f       向下翻一屏幕

  Ctrl + b      向上翻一屏幕

 

  删除

  x        删除光标后的一个字符,相当于 del

  X        删除光标前的一个字符

  dd       删除光标所在行

  n dd       删除光标所在行及以下 n 行

  D         删除光标后本行所有内容,包含光标所在字符

  d0(数字0)    删除光标前本行所有内容,不包含光标所在字符

  dw       删除光标开始的单词,包含光标所在字符, 意思是“从这里切到下一个单词”

      de         意思是“从这里切到当前单词的结尾”。

      db         反向删除一个单词

  

  撤销

  u        一步一步撤销

  Ctrl + r      反撤销

 

  重复命令

  .(点)      重复上一次操作的命令,如 dd,然后 .(点)

 

  文本移动

  >>       文本行

  <<       文本行

 

  复制粘贴

  yy        复制当前行

  n yy       从当前行开始复制 n 行,包含当前行

  p         在光标所在位置向下新开辟一行,粘贴 dd(删除) 、yy(拷贝) 的内容

 

  可视模式

  v(visual)   按字符选中文本,选中文本为可视模式,可配合 d、y、>>、<< 实现对文本的删除,复制,左右移动

  V         按行选中文本,选中文本可...

 

  替换操作

  r        替换光标所在字符

  R          替换所有字符

 

  查找

  /        str 查找

  n          查找下一个

  N         查找上一个

 

    shift + : 从命令模式进入末行模式

      替换命令

        在文件中把 abc 全部替换成 123:%s/abc/123/g

        在文件中把第1行至第10行之间的abc替换成123:1, 10s/abc/123/g

 

      set number      设置行号

    

      vim 里执行 shell 命令

        输入 !,后面跟命令

 

      daw:删除单词,全选:ggVG

      

      va":选中当前引号中的内容(包含引号)

      分别更改这些配对标点符号中的文本内容. # 常用
      ci’、ci”、ci(、ci[、ci{、ci< -

      分别删除这些配对标点符号中的文本内容 # 常用

      di’、di”、di(或dib、di[、di{或diB、di< -

      分别复制这些配对标点符号中的文本内容 # 常用

      yi’、yi”、yi(、yi[、yi{、yi< -

      分别选中这些配对标点符号中的文本内容
      vi’、vi”、vi(、vi[、vi{、vi< -

      Vim快速移动光标至行首和行尾

        1、 需要按行快速移动光标时,可以使用键盘上的编辑键Home,快速将光标移动至当前行的行首。除此之外,也可以在命令模式中使用快捷键"^"(即Shift+6)或0(数字0)。

        2、 如果要快速移动光标至当前行的行尾,可以使用编辑键End。也可以在命令模式中使用快捷键"$"(Shift+4)。与快捷键"^"和0不同,快捷键"$"前可以加上数字表示移动的行数。例如使用"1$"表示当前行的行尾,"2$"表示当前行的下一行的行尾。

 

2024-01-19补充

vim

移动的命令

      ^
      k
<h          l>
      j
      v
命令 效果 备注
k 向上移动一行
nk 向上移动n行 常用
j 向下移动一行
nj 向下移动n行 常用
h 向左移动一个字符
l 向右移动一个字符
w 向右移动到下一个单词的起始处, 2w表示移动到下2个单词的起始处, 3w以此类推 起始处表示第一个字符
e 向右移动到当前单词的结尾处, 2e表示移动到下1个单词的结尾处, 3e以此类推 结尾处表示最后一个字符
b 与e相反
$ 向右移动到光标所在的行尾

插入的命令

命令 效果 备注
a 在当前光标下面插入
A 在当前光标所在行的末尾插入 使用场景多, 例如在代码后面添加 ;

删除的命令

命令 效果 备注
dw 向右删除一个单词, 删除到下一个单词的起始处, 不包含单词的起始处字符
dnw n=2,3... 向右删除n个单词, 删除到下n个单词的起始处 ndw = dnw
de 向右删除一个单词, 删除到当前单词的结尾处, 包含单词的结尾处字符
dne n=2,3... 向右删除n个单词, 删除到下n-1个单词的结尾处 nde = dne
d$ 从光标所在字符向右删除到行尾
dn$ 从光标所在字符向右删除到下n-1行的行尾 nd$ = dn$
dd 删除当前行
dnd 删除n行 ndd = dnd
di' di', di", di(, di], di}, di<, 删除这些配对标点符号中的文本内容 i = in

更改类命令

命令 效果 备注
ce 删除当前光标到当前单词末尾, 并进入insert模式; cne, 删除当前光标到下n-1个单词末尾, 并进入insert模式 ce 的效果 和 cw的使用效果是一样的, 推荐使用 ce
cw 删除当前光标到当前单词, 并进入insert模式; cnw, xxxx
c$ 删除当前光标到当前行尾, 并进入insert模式
ci' ci', ci", ci(, ci], ci}, ci<, 更改这些配对标点符号中的文本内容 w(word) 也是一种范围
vi' 选中单词
va' 选中符号中间的内容, 包含符号 i = in, a = all

复制类命令

命令 效果 备注
yy 复制一行
nyy 复制n行
ye 复制当前单词, 截止到单词的末尾 常用
yw 复制当前单词, 截止到下一个单词的起始位置(往往会多复制一个空格)
yi' yi', yi", yi(, yi], yi}, yi<, 复制符号中间的内容单词

置入类命令

命令 效果 备注
p 将最后一次删除的内容置入光标之后

替换类命令

命令 效果 备注
r 输入r之后, 紧接着输入替换光标所在位置的字符
R 进入替换模式, 按 ESC退出替换模式
😒 😒/old/new/g 可以替换old为new 不写 /g 只改变光标所在行的第一个匹配, 写 /g 将该行中所有old替换为new
:%s :%s/old/new/g 替换整个文件中的每个匹配字符串, 不提示
:%s :%s/old/new/gc 替换整个文件中的每个匹配字符串, 并对每个匹配字符串提示是否替换

搜索类命令

命令 效果 备注
/ 输入 /字符串 可以在当前文件中查找该字符串, n, 查找下一个, N, 查找上一个
? 输入 ?字符串 可以逆向查找字符串

配对括号的查找

命令 效果 备注
% 可以查找当前行配对的括号: ), ], } 按一次查找当前行的括号, 再按 % 就可以跳回配对的括号处

缩紧的命令

命令 效果 备注

撤销的命令

命令 效果 备注
u 撤销最后执行的命令
U 撤销对整行的修改
CTRL + r 反撤销 按住CTRL不放, 再按r

定位以及查看文件状态

命令 效果 备注
CTRL + g 显示当前编辑文件中, 当前光标所在行位置, 以及文件状态信息
gg 跳转到文件第一行, 配合d命令可以删除到文件开头
G 跳转到文件最后一行, 配合d命令可以删除到文件末尾
:number 跳转到第 number 行
CTRL + o 跳转到前一个编辑的位置 常用
CTRL + i 跳转到后一个编辑的位置, 与 CTRL + o 相反 常用

技巧

  1. 在行尾添加分号
    1. 使用 A
  2. 修改删除符号中间的内容
    1. 使用 vi + 符号
    2. 需要对符号操作, 使用 va + 符号
  3. 修改变量名:
    1. 使用 * 匹配变量名
    2. 使用 ciw 修改第一个变量名
    3. 将光标跳转到其他变量名, 使用 . 修改其它变量名(. 是一种宏操作)
  4. 快速跳转
    1. 向上跳转n行, nk, 比如向上跳转3行, 输入3k (横向光标不变)
    2. 向下跳转n行, nj

 

 

end~~~

    

 

 

 

posted @ 2019-05-06 17:44  kaichenkai  阅读(314)  评论(0)    收藏  举报