vim简单使用教程

vim常用模式.

   命令模式(command-mode)
   插入模式(insert-mode)
   可视模式(visual-mode)
   正常模式(normal-mode) ,也是编辑模式

模式的转换:

① 其它模式==>正常模式    
     按 Esc键
②正常模式==>插入模式    
     按 i   在光标前插入    
     按 I   在行首插入 
     按 a   在光标后插入 
     按 s   删除光标所在的字符再插入
     按 A 在行末插入    
     按 o   在当前行之下新建行   
     按 O 在当前行之上新建行
     按 S   删除光标所在行再插入
③ 正常模式==>命令模式   
      按 : (shift 加 分号)
④ 正常模式==>可视模式   
      按 v 可视模式    
      按 V 可视块模式

vim退出:

点击 Esc 键,Vim 进入命令模式。然后输入:
:q ——退出(这是 :quit 的缩写)
:q! ——不保存退出(这是 :quit! 的缩写)
:wq ——写入文件并退出;(这是 :writequit 的缩写)
:wq! ——(如果文件只有读权限)写入并退出(如果文件没有写权限,强制写)
:x ——类似于 :wq,如果文件无变动,那就不写入
:qa ——退出全部(这是 :quitall 的缩写)
ZZ —— (大写的 Z)如果文件有变动,写入/保存,然后退出;
ZQ —— 如果不想保存文件,也可以这个命令退出;

vim打开文件乱码解决方案:

编辑~/.vimrc文件,加上如下几行:
set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
set termencoding=utf-8
set encoding=utf-8

vim寄存器:

vim强大之处之一就是它自带一堆寄存器,每个寄存器独立使用,你可以在不同寄存器中存储不同数据,命令,你可以把这个想象成一个加强版的剪贴板,当然它的功能不止剪贴板这么简单。

vim的官方文档有关部分:

1.无名(unnamed)寄存器:"",缓存最后一次操作内容;
2.数字(numbered)寄存器:"0 ~"9,缓存最近操作内容,复制与删除有别, "0寄存器缓存最近一次复制的内容,"1-"9缓存最近9次删除内容
3.行内删除(small delete)寄存器:"-,缓存行内删除内容;
4.具名(named)寄存器:"a ~ "z或"A - "0Z,指定时可用;
5.只读(read-only)寄存器:":,".,"%,"#,分别缓存最近命令、最近插入文本、当前文件名、当前交替文件名;
6.表达式(expression)寄存器:"=,只读,用于执行表达式命令;
7.选择及拖拽(selection and drop)寄存器:"*,"+,"~,存取GUI选择文本,可用于与外部应用交互,使用前提为系统剪切板(clipboard)可用;
8.黑洞(black hole)寄存器:"_,不缓存操作内容(干净删除);
9.模式寄存器(last search pattern):"/,缓存最近的搜索模式。

查询一下目前寄存器的情况:

:reg  

寄存器的使用方法,通过“ 加上 寄存器名,就可以访问特定的寄存器:

"ap      粘贴字母a寄存器内容
"1y      把选取内容复制到数字寄存器1

寄存器规则5,就是那个加粗寄存器,这就是系统的剪贴板,我们通常使用的ctrl+c  ctrl+v 的内容就保存在这个寄存器中,所以你要把需要复制的内容放在*寄存器中,就可以在gui界面中用粘贴或ctrl+v粘贴了,同理,粘贴在vim中也一样

"*y    复制到系统剪贴板
"*p    粘贴
"*gp  粘贴并且移动光标到粘贴内容后

但是光是输入命令"+p就已经让人觉得很麻烦了,这时候,vim的map功能就又可以大显神通了,我们只需要把“+y  和 ”+gp  map到你喜欢的快捷键上即可:

首先打开vimrc(如果没有,请创建一个)

vim ~/.vimrc  

然后在其中输入:

nmap <c-v> "*gp
nmap <c-c> "*y

 说一下, nmap这个命令只有在normal情况下才生效,在insert模式下是不生效的。

光标操作:

方向:

k               上移;
j               下移;
h               左移;
l               右移。

按大写的G 跳到最后一行。 然后按小写的O键,增加一行

翻页:

ctrl-b:类似于键盘上的"PgUp"(b为backword)  
ctrl-f:类似于键盘上的"PgDn"(f为forword)

行操作:

^:移动光标到行首;
$:移动光标到行尾;
G:移动到末行;
1G:移动到首行;
50G:移动到50行;
H:移动到当前窗口的首行;
M:移动到当前窗口的中间位置;
L:移动光标到当前窗口的最后一行;

光标跳转命令:

ctrl-o:(类似于word等文本编辑器的ctr-z取消操作),此操作返回上一次光标的位置;
ctrl-i:(类似于word等文本编辑器的ctr-Y重做操作),此操作在ctrl-o返回上次光标位置后,再回到最后光标的位置

常用命令:

撤销:

u   撤销上一步的操作
Ctrl+r 恢复上一步被撤销的操作

复制,粘贴,系统剪贴板

1. 选定文本块。使用v进入可视模式,移动光标键选定内容。 

2.复制的命令是y,即yank(提起) ,常用的命令如下: 
    y      在使用v模式选定了某一块的时候,复制选定块到缓冲区用; 
    yy    复制整行(nyy或者yny ,复制n行,n为数字); 
    y^   复制当前到行头的内容; 
    y$    复制当前到行尾的内容; 
    yw   复制一个word (nyw或者ynw,复制n个word,n为数字); 
    yG    复制至档尾(nyG或者ynG,复制到第n行,例如1yG或者y1G,复制到档尾)  
    
3. 剪切的命令是d,即delete,d与y命令基本类似,所以两个命令用法一样,包括含有数字的用法.  
    d      剪切选定块到缓冲区; 
    dd    剪切整行 
    d^    剪切至行首 
    d$     剪切至行尾 
    dw    剪切一个word 
    dG     剪切至档尾  
    
4. 粘贴的命令式p,即put(放下) 
    p      小写p代表贴至游标后(下),因为游标是在具体字符的位置上,所以实际是在该字符的后面 
    P      大写P代表贴至游标前(上) 
    整行的复制粘贴在游标的上(下)一行,非整行的复制则是粘贴在游标的前(后)
注: 
     在正则表达式中,^表示匹配字符串的开始位置,$表示匹配字符串的结束位置。 
     命令前面加数字表示重复的次数,加字母表示使用的缓冲区名称。使用英文句号"."可以重复上一个命令。 
     在复制粘贴时,另一组常用的命令是u(撤销操作),U(撤销某一行最近所有修改),Ctrl+R(重做),这些功能主要是vim中的,vi中略有差别

清理文件内容:

方法1:    按ggdG
方法2:       :%d

删除多行:

删除多行:
     1.首先在命令模式下,输入“:set nu”显示行号;
     2.通过行号确定你要删除的行;
     3.命令输入“:32,65d”,回车键,32-65行就被删除了

其他:

流行的文本编辑器通常都有前进和后退功能,可以在文件中曾经浏览过的位置之间来回移动。在 vim 中使用 Ctrl-O 执行后退,使用 Ctrl-I 执行前进。

http://blog.csdn.net/hk2291976/article/details/42196559

https://www.cnblogs.com/lijia0511/p/5644566.html

https://www.cnblogs.com/zeushuang/archive/2012/11/16/2772830.html

http://www.jianshu.com/p/bcbe916f97e1

原文地址:https://www.cnblogs.com/hongdada/p/7999499.html