vim快捷键介绍

来源:互联网 发布:matlab矩阵绘制三维图 编辑:程序博客网 时间:2024/06/08 05:27

开始之前:本来打算传张图片上来的,结果串不上来 ,我说我其实是会画图的,你们信么。

vim 是一款强大的屏幕文本编辑器,即一次读取所有的文本内容,并显示在屏幕上;与之对应的是行编辑器,每次仅读取一行内容比如说ed。


vim的选项:

虽然标题是快捷键,但是我还是把选项也写上吧。


vim file :没有选项的选项,直接使用vim打开文件     扩展: vim file1 file2 file3  :使用vim 同时打开多个文件 ,但是只能显示一个,但是可以通过命令进行文件之间的切换。        :next 下一个        :prev 前一个        :first 第一个        :last 最后一个         :wall 保存所有        :qall 退出所有        :wqall 保存退出所有

.

 行跳转选项:     即在打开vim时决定光标停留的行,行跳转可以使用 数字或模式实现    +# : 打开文件时光标跳转到 # 行的行首          vim +14 /etc/passwd    +/patter :打开文件时光标停留在第一次匹配到该字符串的地方.         vim +/root /etc/passwd

.

vim -m file : 以只读的方式打开文件

.

vim -b file :以二进制的方式打开文件

.

vim -d file1 file2  : 以分屏的方式 打开两个文件.高亮显示差别.

.

vim -o/-O file1 file2 : 代开多个文件 ,但将窗口分割为多个小窗口-o 水平分割 -O 垂直分割

.

vim -e file :打开文件时进入扩展的命令模式    等价命令ex

vim快捷键

个人理解: vim 进入后的界面不同于windows的记事本可以直接编辑,vim编辑器进入之后只能使用命令。包括ed编辑器,也不是直接编辑的。
而且编辑模式命令与扩展命令模式命令,其实都是命令的一种,只是有的命令动作比较长,在动作中可能需要用户的输入。也就是inster状态。有的命令带有扩展选项,:。

插入操作

i:在当前的光标位置之前插入字符,esc键结束插入,    # i,esc :为1个完整的动作,重复执行动作#次,当#不指定时,默认为1 次。a:光标向后移动一个字符,然后在当前光标前插入。即在当前光标位置之后插入字符。esc键结束插入。    # a,esc :为1个完整的动作,重复执行动作#次,当#不指定时,默认为1 次。l:在当前行的行首插入字符 ,esc键结束插入,    #I,esc :为一套完整的动作,重复执行动作# 次,当# 不指定时,A:在当前行的行尾插入一个字符,esc键结束插入    #A,esc :为一套完整的动作,重复执行动作# 次,当# 不指定时,默认为1次 。o:在当前行的下方插入新的空白行,    #o:无需esc 键结束,重复执行o动作 #次,当#不指定时,默认为1 O:在当前行的上方插入新的空白行。    #O:无需esc 键结束,重复执行O动作# 次,当# 不指定时,默认为1 。c:修改模式,可实现范围修改,即清空指定范围,然后进入插入模式。

窗口操作

ZZ :保存退出ZQ :退出不保存单文件窗口分割:    ctrl+w, s :水平分割    ctrl+w, v :垂直分割    ctrl+w ,q:取消相邻窗口    ctrl+w ,o:取消全部窗口    : wqall : 退出

跳转操作

字间跳转

. . . . 上k . 左h . 右l . 下 j .

词间跳转:

. . 当前或上一个词首 b 下一个词首 w . 当前或下一个词尾 e

当前页跳转:

. . . 页首:H 页中:M 页底: L

行内跳转:

. . ^ :非空白字符的行首 . 0:真正的行首 行尾 :$

段落跳转:

. . )跳至下一句 .为分割 (跳至上一句 .为分割 } 跳至下一句 空行为分割 { 跳至上一句 空行为分割

翻页操作:

. . ctrl + b 向上全屏 ctrl + u 向上半屏 ctrl + f 向下全屏 ctrl + d 向下半屏

G 行号跳转

. gg 跳至首行 G 跳到行号为#的行 gg 跳到行号为#的行 G 跳到尾行

字符编辑

x :剪切光标处的字符,光标位置不改变,剪切位置后的字符向前补齐                            \#x 重复执行x ,#次~ :装换字符的大小写,转换后光标位置向后移动一位。    \#~ 重复执行~ , #次r/R :替换/连续替换光标处的字符。连续替换时每替换完成一个单词,光标向后移动1位。    \#r 重复执行r ,#次,r动作类似于宏。r替换开始,至输入字符,替换完成,为一个r动作。所以#r会替换#个相同的字符。d :删除操作,可结合光标跳转字符功能,实现范围删除。    格式:<start>d<end>:从指定的开始位置为开始,至指定的位置为结束,对期间的内容[start-end]执行d操作即删除。其中start的内容可以默认,即使用光标位置。        1ggdG :删除全部内容        d50gg :删除当前光标位置至50行的所有内容        0d$ :删除整行内容            y :复制操作,可结合光标字符跳转功能,实现范围删除。p :粘贴操作,    p:如果粘贴的为整行则在当前行的下面粘贴,如果是字符则在光标后粘贴。    P:如果粘贴的为整行则在当前行的上面粘贴,如果是字符则在光标前粘贴。J :删除当前行后的换行符

可视化操作:

. v:面向字符 V:面向行 c+v:面向块

撤销

. u :撤销最近一次更改 #u :撤销之前#次更改 U :撤销光标移动至该行后的所有更改 ctrl + r 恢复最近1次撤销

重复操作

. . 重复之前的操作 . 重复之前的操作#次

扩展命令模式
使用:进入命令扩展模式,使用对应命令进行操作。
个人理解:vim中并无模式,插入模式,命令扩展模式,都不过是执行的命令过程中的一部分,只是有些命令动作较多。扩展命令模式是一条带有参数的命令。
:q 退出
:w 保存
:x 保存退出
:r 读取文件的内容或命令的输出,类似于重定向
:! 在命令之后表示强制执行该命令 ,在外部(对于vim)命令之前表示执行该命令
:!ls
:r!ls

查找:    :/PATTERN : 从当前光标所在处向文件尾部查找    :?PATTERN : 从当前光标所在处向文件首部查找    n: 与命令同方向    N:与命令反方向    

地址定界:
格式 :start_pos,end_pos
数字表示法:
# : 单一行号,只表示该行号的行
# ,# :使用数字表示具体的行号。表示一段范围。
# ,+#:从左侧#表示的行号为开始,+#表示增量,即#+#行。
模式匹配法:
/pat1/,/pat2/ :从第一次被pat1匹配到的行开始,一直到第一次被pat2匹配到的行结束,
特殊表示:
. 表示当前的行
-1 表示最后一行的上一行
% 表示全文
使用方法:
地址定界中的表示方法可以混合使用。在地址定界后跟随一个动作,如d(删除),y(复制),w file(将定界内容保存到文件),r file(在指定的位置插入指定文件中的内容)
替换:
:s 格式:地址定界 s/要查找的内容/替换为的内容/修饰符
可以不指定地址定界,在不指定地址定界时,默认为光标所在的行。
要查找的内容:可使用模式,但是基本的正则表达式。
替换为的内容:不能使用模式,但是可以使用\1,\2…等后项引用,还可以使用&引用前面查找时找到的整个内容
s前面可以指定范围 %全文
修饰符
i: 忽略大小写
g: 全局替换,默认情况下,每一行只替换第一次出现
gc: 全局替换,每次替换前询问
查找替换中的分隔符/可替换为其他字符
s@/etc@/var@g
s#/boot#/#!
& :表示之前搜索到的文本
%s/root/&er/g
改变大小写
gu :变为小写
gU :变为大写

vim属性更改:    更改的属性仅对当前使用的vim有效,如果长期有效许定义在配置文件中    :set nu 增加行号    set nonu 取消行号    :set sm 括号成对高亮    :set ai 自动缩进    :syntex on /off 语法高亮    :set ic 忽略字符的大小写。    :set fileformat=dos   启用windows格式:    :set fileformat=unix  启用unix格式: