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