linux vi的map pI,vim简单实用的技巧总结

vi 和 vim无需过多的区分,vim可认为是vi的增强版。

这篇关于vim的手册,我个人觉得实在无法把它写成文章,只能以手册的方式列举出来,

因为,vim是一个动手使用的工具,只能在使用中你才能慢慢发现它的操作多么符合逻辑,

我从下面这些简略的描述中,尽量将它的操作步骤写出来,但更重要的是你必须在使用过程中去尝试,

才会发现更多有趣的功能。

vim的配置文件:

/etc/vimrc :这个配置文件到设置对所有用户生效。

~/.vimrc   :vim在家目录中有一个配置文件,将自定义到map ,  ab , set设置都可以直接加入其中,每次使用vim时都生效此文件可自己手动创建。

注:修改默认编辑器为:vim

EDITOR=vim

export  EDITOR

vim使用必须知道它主要的三种模式:【注意:下面所有操作使用的字母均区分大小写】

0. 所有模式的退出都是按 ESC 键

vim下删除实际为剪切

1. 命令模式 :可输入内部指令也可进行复制删除移动等操作,不过这种方式通常适合于查找替换,直接导入命令结果,打开多文件同时编辑等。

切入方法:在末行模式下,输入“冒号”,即可进入

2. 输入模式:这是正常的编辑文件内容时的状态。

切入方法比较多:

1. i :从当前光标位置开始进入编辑状态。    I :先回到行首在进入编辑状态。

2. a :将光标向前移一个字符后进入编辑状态。 A :先到行尾,在进入编辑状态。

3. s :先删除当前光标处字符,再进入编辑状态。S :先删除当前行,在进入编辑状态。

4. cc :先删除当前行,在进入编辑状态。     C :从当前光标处删除到行尾,在进入编辑状态。

5. o :先向下插入新空白行,在进入编辑状态。 O :先向上插入新空白行,在进入编辑状态。

3. 末行模式:刚用vim打开文件时就处于末行模式。

在末行模式下可以直接输入内部命令来移动光标,删除,恢复,复制等操作。

查找

切入方法:直接按 /

替换编辑模式:此模式仅用来替换使用

切入方法:按 R

按 r :不会进入替换编辑模式,它是直接替换单个字符。

多行选取模式:【可进行复制,删除】

切入方法:按 大V, 然后按上下键选择多行进行选取;小v :是从光标当前位置开始多行选取。

接着,按 y | d 可进行复制或删除;

最后,按 p 即可粘贴。

块选取模式:【可进行复制,删除】

切入方法:按 Ctrl + 小v, 然后按上下左右键来选择操作的块。

接着,按 y | d 可进行复制或删除;

最后,按 p 即可粘贴。

注:块复制的一个实用的小技巧:

多行快速注释:

> 先移到行首,按ctrl + v,

> 将需要注释掉的行的行首都选中

> 按 大I,进入输入模式

> 接着输入 注释符号 如 #,// ....

> 最后,同时按两次 ESC键,即可。

编辑操作:

末行模式:

gg :快速到全文开头       G :快速到全文末尾

Y | yy :复制一行。      number + Y | yy :同时复制number行。

p :粘贴到当前行下面      P :粘贴到上当光标的上一行。

dd :删除一行。          number + dd : 同时删除number行。

D  :从光标当前位置删除到行尾

x  : 删除光标右边的字符   X : 删除光标左边的字母

u  :撤销

ctrl + r :重做

命令模式:

:20,100 {[copy |move 200] delete }  -->将20~100的内容复制到201行处。

copy可简写为co

move可简写为mo

delete可简写为del

:r /etc/shadow    -->将/etc/shadow读入到当前光标所在处

: ! ls /usr/local  -->不退出vim,来执行命令。

:r ! grep mysql /etc/passwd    -->将命令执行结果插入到当前光标处

保存退出:

:wq | ZZ  -->表示保存退出

ctrl + z :将当前编辑文件调入后台。使用fg调回前台。

ctrl + g :显示光标在当前文件的位置信息

:q!       -->不保存退出

:w  /tmp/abc.txt   -->另存为/tmp/abc.txt

:10,$w  /tmp/tail.txt  -->将文件从第10行到文件尾,另存为/tmp/tail.txt

:X   -->对文件加密存储

:e!  -->重新读入当前文件

开启vim的功能:

:set nu  开启行号显示

:set nonu  关闭行号显示

:set ts=4 设置tab键为4个字符的空挡

:set smartindent  开启vi的自动缩进功能

:set nosmartindent  关闭自动缩进功能

:set sw=4 设置自动缩进的空挡为4个字符

:set list  查看隐藏字符

查找替换:

操作方法:

1. 进入命令模式

2. 格式:[range]s///[args]

例: 要替换全文中所有abc为123,且忽略大小写.

:%s/abc/123/gi

仅替换21~50行之间所有的abc为Ab123

:21,50s/abc/Ab123/Ig

从当前行向下10都注释掉

:.,+10s/^/#/g

参数说明:

range:

空:表示仅对当前行进行查找替换

% : 对全文进行查找替换

Row : 仅对指定行号的行进行查找替换

Row1,Row2 : 对一个行号范围进行查找替换

args : 它的取值可以是下列之一 或  组合。

空  :仅替换该行第一个匹配字符串

g   : 替换该行所有匹配的字符串

i   :忽略大小写

I   : 不忽略大小写

c   : 每个替换都需要确认

扩展:

dG : 从当前位置删到全文尾    yG : 从当前位置复制到全文尾

dgg : 从当前位置删到全文首   ygg :从当前位置复制到全文首

d^ : 从光标当前位置删到行首   y^ : 从光标当前位置复制到行首

d$ : 从光标当前位置删到行尾  y$ : 从光标当前位置复制到行尾

dw :删除光标右边位置的单词  yw :复制光标右边位置的单词

db :删除光标左边位置的单词  yb :复制光标左边位置的单词

dNw :删除光标右边N个的单词  yNw :复制光标右边N个的单词

dNb :删除光标左边N个的单词  yNb :复制光标左边N个的单词

删除空行:

:%s/^\n//g

:g/^$/d      -->删除空行

:g/^\s*$/d   -->删除任意空行

标记点复制删除移动:

操作方法:

0. 进入末行模式

1. 先将光标移动操作行的任意位置,接着按 ma

2. 将光标移动到区间的结束行的任意位置,按 mb

3. 根据操作:

》若为 删除,则 进入命令模式,:'a,'b del  -->注:是单引号+a,单引号+b

》若为 复制或移动,则在全文中任意位置,按 mc

接着进入命令模式, :'a,'b [copy | move] 'c

vim启动时直接定位到指定行:

vim +  /var/log/message     -->启动时直接定位到文件尾。

vim +行号  /var/log/message  -->启动时直接定位到指定行。

多文件并行编辑:

:sp a.txt  -->将当前编辑窗口平均分成上下两块,在上半块显示a.txt,

使用ctrl + w + w,在多个窗口间切换。

:vsp a.txt -->将当前编辑窗口平均分成左右两块,在左半块显示a.txt,

使用ctrl + w + w,在多个窗口间切换。

vim -O  1.txt  2.txt  3.txt  -->大O参数,可同时编辑三个文件,

使用ctrl + w + w,在多个窗口间切换。

vimdiff  1.txt  2.txt    -->在vim编辑器中显示出两个文件的不同之处。

定义快捷键:

操作方法:

1. 进入命令模式

2. :map  ^P  I#:  -->注意:^P 这个尖角号在Vi中是通过:

按ctrl+v 再按ctrl+p才出来^P的 或 按ctrl + v + p也可。

表定义了一个快捷键ctrl+P,只有按ctrl+P则执行将光标移到行首,并插入#号,再退回到命令模式。

【i:插入,#:要插入的字符,:退出标志】

例:

定义了一个快捷键ctrl+D,执行操作为:将光标移到行首,并删除第一个字符,如:#

:map  ^D  ^x

定义一个快捷键ctrl+E,在光标所在处插入我的邮箱。

:map  ^E

取消快捷键:unmap  ^P

将a替换为b :

操作方法:

1. 进入命令模式

2. :ab  mymail

3. 在正文中任何位置,输入mymail,按空格 或 回车即可快速替换为

取消方法:unab  mymail

行间移到操作:

k :向上

5k :向上移到5行

命令模式下,再按 +number 回车可以当前行为基准向上移到number行。

h : 向左                                            l :向右

5h:左移5个字符                            5l:向右移5个字符

5b: 左移5个单词                              5w:右移5个单词

number + 空格: 向右移动指定字符数。

j :向下

5j:向下移到5行

number + 回车 :向下翻指定行

命令模式下,再按 -number 回车可以当前行为基准向下移到number行。

快速移到行首和行尾

操作方法:

编辑:  直接按 大I,可快速移到行首并进入编辑状态,按 大A,可快速到行尾并进入编辑状态。

非编辑:直接按 ^ 可快速跳到行首, $ 可快速跳到行尾。

快速定位到当前行中指定的字母处

操作方法:

正向跳转:则在光标所在行的任意位置, 按 f ,再按要跳到的字母即可快速跳转到。

反向跳转:则在光标所在行的任意位置, 按 F ,再按要跳到的字母即可快速跳转到。

段落间跳转:

操作方法:

在全文的任意位置, 按 { 可跳转到上文中第一个空白行隔断处; 按 } 可跳到下文中第一个空白行隔断处。

此功能非常适合快速复制 | 删除 整个函数

操作方法:先移到函数头或尾的空白行处, 以尾为例,先按 { 到函数头部第一个空白行,

再按 y | d , 最后按 } 再跳到函数尾,即可复制或删除一整个函数。

自动匹配最近的一对圆括号 或 花括号,非常适合复制整个函数体

操作方法:

复制或删除函数体:将光标移到到函数体的 花括号上,按:y%  或  d%

复制或删除函数头:将光标移到到函数名首字母处,按 y%  或  d%

定界符内的字符快速复制,剪切,删除:

定界符:如 "/a/b/c", '/etc/a', function(a,b),

类似上面这种定界符内的字符均可操作:

方法:

1. 先将 光标移到到定界符内部任意位置,

2. y : 复制,  d: 剪切,删除, c: 删除或剪切 并 直接进入编辑模式

i :即inner,表示要操作对象内部的文本

a : 即all,表示要操作整个对象的文本

3. 直接按 y + i 或 a +定界符的两端任何一个,即可剪切或复制。

如:

若仅剪切<>内部的字符,方法是直接将光标移到<>内部,按 di> 或 di< 即可。

翻屏操作:

ctrl + f :向下翻屏幕   ctrl + d: 向下翻半屏幕

ctrl + b :向上翻屏幕   ctrl + u: 向上翻半屏幕

快速将光标所在行移到到行屏幕顶或尾或中间:

操作方法:

将光标移到全文中任意位置,

按   zt ,可将当前光标所在处置于屏幕顶;

z+回车 ,可将当前光标所在处置于屏幕顶;

按  zb ,可快速光标所在处置于屏幕低;

z+减号 ,可将当前光标所在处置于屏幕低;

按  zz ,可将当前光标所在处置于屏幕中间位置。

注:此方法可配合 H, M, L 来方便快速翻页:

H :快速移到到屏幕顶。

M :快速移到到屏幕中间

L  :快速移到到品名低。

切换光标处字母的大小写:

操作方法:

将光标移到到字母上,按 ~

增减光标处的数字:

操作方法:

增加数字:将光标移到到数字上,按 ctrl + a

减小数字:将光标移到到数字上,按 ctrl + x

重复前一次操作:

操作方法:

刚刚操作过的动作,若想再次做,则可直接,按 点号 "."

原创文章,作者:Wn1m,如若转载,请注明出处:http://www.178linux.com/8117

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值