vim常用命令

       先说下,vim 的学习经历是曲折的,但一旦上手后就会觉得用起来很爽,我从三年前开始接触linux ,使用vim 起,到现在也才掌握着vim 常用命令,只要用熟了就能用的得心应手!

     先说下vim 的三种工作模式:

  1.         命令模式
  2.         文本模式
  3.         末尾模式

    

 

    从命令模式进入到为文本模式有8个命令:a/A,i/I,o/O,s/S ,看下这几个命令有什么区别:

    

命令说明
a在当前光标后进行编辑
A将光标定位在行尾进行编辑
i在光标处进行编辑
I将光标定位在行首进行编辑
o在光标所在行向下插入一行进行编辑
O在光标所在行向上插入一行进行编辑
s删除当前光标所在字符并进行编辑
S删除当前行内容,并将光标定位在行首进行编辑

除了以上表列出来的外,在命令行模式下还可按下  c + w  ,即从光标所在位置删除至单词的尾部并且进入文本模式。

 

1.命令行模式常用命令:

    光标移动命令: 

       最简单的莫过于上下左右移动光标了,可以使用小键盘的上下左右,但不推荐哦,请使用  上(k)、下(j)、左(h)、右(l)键  替代。 

    上面是字符级别的光标移动,还有单词级别的光标移动,比如:

  1.     w :跳转到下一个单词首字母
  2.     b :跳转到上一个单词首字母
  3.     e  :跳转到下一个单词尾部

   ps:w、b、e这几个单词,小写和大小功能是一样的。

  下面看下行级光标移动:

  1.   0(阿拉伯数字0) :光标移动到行首
  2.   $ : 光标移动到行尾
  3.   ^(shift + 6):光标移动到行首

  段落级(翻屏)光标移动:

  1.   {:上(本)个段落首部
  2.   }:下(本)个段落尾部

屏幕级(不翻屏)光标移动:

  1.  H : 当前屏幕首部
  2.  L : 当前屏幕尾部
  3.  M : 当前屏幕中间
  4. Ctrl-d : 向下翻半屏
  5. Ctrl-u : 向上翻半屏
  6. Ctrl-f :  向下翻一屏
  7. Ctrl-b : 向上翻一屏

文档级光标移动:

  1.  gg : 定位到当前文档第一行
  2.  G : 定位到当前文档尾部  
  3.  nG : 移动到第n行  (1G 第一行)

复制粘贴剪切删除命令:

   删除:

  1.    删除当前光标字符:x
  2.    删除当前光标前的一个字符:X
  3.    删除一个单词:dw
  4.    删除当前光标至行尾的字符:D 
  5.    删除当前行:dd
  6.    向后删除多行内容: n + dd  (比如 5dd ,表示从当前光标开始删除5行)

上面说过0是把光标移动到行尾,$是把光标移动到行首。组合键 d0 是把光标前的字符给删除,d$  是把当前光标 后的字符给删除。

  

 

ps: 在命令行模式下,敲入 u 可以撤销上一步操作,ctrl + r  组合键可以反撤销。

剪切:

 在vim下 , dd 后并不会立马删除,而是会写入到缓冲区中,所以,在vim 下剪切是 删除dd(删除有多种命令,这里只拿dd来举栗) 后 再按下  粘贴p 。

操作示例:

这是操作前的内容状态:

然后按下6dd:

然后将光标移动到要剪切的位置,按下p(小写),即可在光标后一行剪切内容,完成操作。

 

 

按下P(大写),即可在光标前一行剪切内容。

上面操作演示了剪切操作,还体现了p和P命令的区别。

复制:

  1. 复制当前行的命令是:yy
  2. 复制多行的命令是: n + yy  (包括光标当前行)

操作演示:

ps:这里按下的是小写p,p 是指paste ,粘贴的意思,小写p是指在光标后粘贴,大写P是指在光标前粘贴。

 

看到这里不知道你有没有个疑问?我要是操作不连续的内容怎么办?比如:我有这样的一个需求,复制第一整行和第二行部分内容,那我要怎么操作呢?

vim 还有一种工作模式,上面没有提到,那即是可视模式,在命令模式下按 v 键 即可进入。在可视模式下,即可选择连续的文本来进行操作。

在命令模式下,

按下 v 进入可视模式,并且进行文本选择

选中相应的文本后,按下y(复制),然后光标移动到20行(20G),按下p,即可完成复制。

ps: 是y ,而不是yy ,两者虽然都是复制,但行为却不一样的哦。y 可以复制连续的文本,而且yy不行,而且在可视模式下,p(小写) 的行为也是不一样的哦,在当前案例中并没有在第21行复制(在命令模式下,p操作是在当前光标所在行下面进行的粘贴),而是在第20行复制的。

 

其它删除剪切操作类似。

在命令模式下搜索

/string    

向下搜索字符string ,此时在遍历时,N 是上一个,n 是下一个。

?string 

向上搜索字符string ,此时在遍历时,N 是下一个,n 是上一个。

#   在关键字上按下 # 

此时,我将光标移动到了 第 21 行 list 这个单词的 l 上

然后按下:# 键 

然后即可按n / N 键进行遍历。

在命令模式下,按下 r 键 即可进行单字符的替换操作。

在命令模式下进行系统函数跳转:

 有些时候我们在写 C/C++ 的时候,需要查看下系统函数,这时候我们在命令模式下,可以敲下 K ,即可进入函数帮助文档,但如果所查找函数又是系统提供的命令,那就需要提供准确的章节。

按下 (大写) ,即可进入到函数详情

但会发现,根本不是我们想要的内容,我们要的是Linux Programmer's Manual   这一章节的内容啊。那要怎么才能进入到我们想要的页面呢?上面也说了,加上具体章节。 3 + K 即可。

然后就跳转到了我们想要看的内容页面,如果想返回按下q 即可退出。

这里在提下,如果需要缩进的话,可以按下: >> (两个大于号,向右缩进)和 << (两个小于号,向左缩进) 。

 

下面说下末行模式的一些操作

     前面说了,从命令模式中按下: 即可进入到末行模式。

    在末行模式下替换:

    替换当前光标所在行所匹配内容:

    模式: :s/替换的内容/要替换为的内容   (替换光标所在行第一个 )

   

     

在要替换为的内容后面加g 表示全局替换(当前行全局)。

:s/替换的内容/要替换为的内容 /g   (替换光标所在行的全部目标)

 

上面的命令操作只是在当前光标所在行进行的替换操作。

也可以带上具体的行号来操作 : 

 

  我们把36到40行的man 来替换成手册

  在末行模式下,输入:

   :36,40s/man/手册/g

即可。

当然,如果你想全文档内进行替换,那么可以这样做

:%s/man/手册/g

%表示在所有行内。

有时候,我们需要像其它编辑器一样,需要分屏打开不同的文件(或相同的文件),那这个在vim 中怎么做呢?在vim 中可以末行模式下用sp (split 分割的意思) fileName 来实现。

水平分屏 ( sp ):

在末行模式下: sp fileName 即可。

我这里是 vim 在已经打开的文件下(man.txt) ,再进入末行模式,键入:sp 1.txt 就OK啦。

垂直分屏( vsp ):

v -- vertical  垂直

:vsp fileName 

我这里是 vim 在已经打开的文件下(man.txt) ,再进入末行模式,键入:vsp 1.txt 就OK啦。

好了,分屏后,如何进行光标的切换呢? 在vim 下 ,按下 ctrl + w l两次 ,即可把光标从屏幕一侧切换到另一侧。

  1. 显示行号:set number (或者 set nu
  2. 取消行号:set nonu 

在vim 种还可以执行其它的命令的,具体使用方法:

:! cmdName 

示例 :

在末行模式下,敲入:! ls -l 

按下回车键:

然后按下回车键即可再次进入到vim .

当要保存的时候,可以按下:w ,wq 保存并退出,shift + z (两次,即大Z两次)即可保存并退出,wq all 报存所有的并退出vim。

退出可按:q ,强制退出:q! (q + !) 。

ps:如果你不小心在vim 下按了 ctrl + s (也就是常用的保存),那么linux会进入"假死" 状态,要结束这种状态,按下ctrl + q 即可退出这种状态!!

要从末行模式退出到命令模式,按下两次esc 即可!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值