The most complete history VIM manual

vim of an upward compatible vi text editor can be used to edit a variety of plain text. It is particularly useful for editing programs.

Basic mode:

编辑模式:默认编辑文件进入的模式
输入模式:
末行模式:内置的命令行接口

Basic use:

 # vim [options] [file ..]
+#:打开文件后,直接让光标处于第#行的行首;
+/PATTERN:打开文件后,直接让光标处于第一个被PATTERN匹配到的行的行;
           

Mode conversion:

编辑模式:默认模式

编辑模式 -> 输入模式:
   i:insert,在光标所在处输入;
   a: append,在光标在处后方输入;
   o:在光标所在处的下方打开一个新行;
   I:在光标所在行的行首输入;
   A:在光标所在行的行尾输入;
   O:在光标所在处的上方打开一个新行;
                                   
   输入模式 -> 编辑模式
       ESC键
                                   
   编辑模式 -> 末行模式
       :键
                                   
   末行模式 -> 编辑模式
       ESC键

Close the file:

1.编辑模式下:
   ZZ:保存并退出;
   ZQ:不保存直接退出;
2.进入末行模式:
   :q  退出
   :q!  强制退出,不保存此前的编辑操作
   :wq  保存并退出;
   :w, :q
   :x  保存并退出;
   :w /PATH/TO/SOMEFILE 保存到指定文件

Command mode the cursor jumps

The cursor jumps:

字符间跳转
   h:左
   j:下
   k:上
   l:右
现在直接上下左右键
#COMMAND:跳转由#指定的个数的字符;
           

To jump between words

w:下一个单词的词首;
e:当前或后一个单词的词尾;
b:当前或前一个单词的词首;
#COMMAND:跳转由#指定的个数的单词;
           

Jump beginning of the line end of the line

^:跳转至行首的第一个非空白字符;
0:跳转至行首;
$:跳转至行尾;
           

Jump between the lines

#G:跳转至由#指定的行;
1G, gg:第一行;
G:最后一行;
           

Jump between the sentence:

) 下一句
( 上一句
           

Intersegment jump

} 下一段
{ 上一段
           

Scroll:

Ctrl+f:向文件尾翻一屏
Ctrl+b:向文件首部翻一屏
Ctrl+d:向文件尾部翻半屏
Ctrl+u:向文件首部翻半屏
Enter:按行向后翻

Current Page Jump:

H:页首
M:页中间行
L:页底
zt:将光标所在当前行移到屏幕顶端
zz:将光标所在当前行移到屏幕中间
zb:将光标所在当前行移到屏幕底端
       

vim editing commands:

Character Editor:

默认模式
   x:删除光标所在处的字符;
   #x:删除光标所在处起始的#个字符;
   xp:交换光标所在处的字符与其后面的字符的位置;
       替换命令(replace):
   r:替换光标所在处的字符;
       rCHAR
   ~:大小写切换
               

Delete command:

编辑模式删除
   d:删除命令,可结合光标跳转字符,实现范围删除;
   d$:删除光标所在位置到行尾的字符;
   d^:删除光标所在位置到非空行首的字符;
   d0:删除光标所在位置到行首的字符;
   
   dw:删除光标所在位置到下个单词词首的字符
   de:删除光标所在位置到当前单词或下个单词词尾的字符
   db:删除光标所在位置到当前单词或上一个单词单首的字符
   #COMMAND:
   
   D:等同于d$
   dd:删除光标所在处的行;
   #dd:删除光标所处的行起始的共#行;
       

Paste command (p, put, paste):

编辑模式粘贴
   p:缓冲区中的内容如果为整行,则粘贴在当前光标所在行的下方;否则,则粘贴至当前光标所在处的后方;
   P:缓冲区中的内容如果为整行,则粘贴在当前光标所在行的上方;否则,则粘贴至当前光标所在处的前方;
       

Copy command (yank, y):

编辑模式复制
   y:复制,工作行为相似于d命令;
   y$:复制光标所在位置到行尾的字符
   y^:复制光标所在位置到非空行首的字符
   y0:复制光标所在位置到行首的字符
               
   ye:复制标所在位置到当前单词或下个单词词尾的字符
   yw:复制光标所在位置到下个单词词首的字符
   yb:复制光标所在位置到当前单词或上一个单词单首的字符
   #COMMAND
                   
   yy:复制一整行
   #yy:复制#行
                   

Change command (change, c):

编辑模式 --> 输入模式,实现删除操作;
   c$:删除光标所在位置到行尾的字符并且切换为输入模式;
   c^:删除光标所在位置到非空行首的字符并且切换为输入模式;
   c0:删除光标所在位置到行首的字符并且切换为输入模式;
               
   cb:删除光标所在位置到当前单词或上一个单词单首的字符并且切换为输入模式;
   ce:删除光标所在位置到当前单词或下个单词词尾的字符并且切换为输入模式;
   cw:删除光标所在位置到下个单词词首的字符并且切换为输入模式;
   #COMMAND
                   
   cc:删除光标所在的行,并且切换为输入模式;
   #cc:删除#行并且切换为输入模式;
       

Other editing operations:

Visualization modes:

选定字符
   v:按字符选定;
   V:按行选定;
       
   结合编辑命令使用:d, c, y
       
   撤销(undo)操作:
       u:撤销此前的操作;
       #u:撤销此前的#个操作;
                   
   撤销此前的撤销:
       Ctrl+r
               
   重复执行前一个编辑操作:
       .
   vim自带的练习教程:vimtutor
       

vim line mode:

内建的命令行接口
   

(1) Address delimitation

    :start_pos[,end_pos]
   #:特定的第#行,例如5即第5行;
   .:当前行;
   $:最后一行;
   #,#:指定行范围,左侧为起始行,右侧为结束行;
   #,+#:指定行范围,左侧为超始行绝对编号,右侧为相对左侧行号的偏移量;例如:3,+7
   .,$-1:范围为当前行指倒数第二行
   1,$:范围为第一行至最后一行
   %:全文
   /pattern/:从光标所在处起始向文件尾部第一次被模式所匹配到的行;
   /first/,$:从光标所在处起始,第一次由pat1匹配到的行开始,至最后一行中间的所有行
   /pat1/,/pat2/:从光标所在处起始,第一次由pat1匹配到的行开始,至第一次由pat2匹配到的行结束之间的所有行;
           
   可同编辑命令一同使用,实现编辑操作:
       d:地址定界后接d实现删除该定界范围内的行
       y:地址定界后接d实现复制该定界范围内的行
       c:地址定界后接d实现替换该定界范围内的行并且切换为输入模式
           
       w /PATH/TO/SOMEFILE:将范围内的文本保存至指定的文件中;
       r  /PATH/FROM/SOMEFILE:将指定的文件中的文本读取并插入至指定位置;
           

(2) Find

模式匹配查找
   /PATTERN:从当前光标所在处向文件尾部查找能够被当前模式匹配的所有字符串;
   ?PATTERN:从当前光标所在处向文件首部查找能够被当前模式匹配到的所有字符串;
   n:下一个,与命令方向相同;
   N:上一个,与命令方向相反;
           

(3) Find and Replace

    s:末行模式的命令;
   使用格式:
       s/要查找的内容/替换为的内容/修饰符
       要查找的内容:可使用正则表达式;
       替换为的内容:不能使用正则表达式,但可以引用;
       如果“要查找的内容”部分在模式中使用分组符号:在“替换为的内容”中使用后向引用;
       直接引用查找模式匹配到的全部文本,要使用&符号;
   修饰符:
       i:忽略大小写;
       g:全局替换,意味着一行中如果匹配到多次,则均替换;
                   
       可把分隔符替换为其它非常用字符:
               s@@@
               s###
               
   示例:
       %s@\<t\([[:alpha:]]\+\)\>@T\1@g
       %s@\<t[[:alpha:]]\+\>@&er@g
           

vim multi-file functions:

Multi-file:

    vim FILE1 FILE2 ...
           
   在文件间切换:
       :next  下一个
       :prev  上一个
       :first   第一个
       :last   最后一个
           
   退出所有文件:
       :wqall 保存所有文件并退出;
       :wall
       :qall
               

Multi-window:

窗口分割
   -o:水平分割窗口
   -O:垂直分割窗口
   
   在窗口间切换:Ctrl+w, ARROW
       
   注意:单个文件也可以分割为多个窗口进行查看:
       Ctrl+w, s:水平分割窗口
       Ctrl+w, v:垂直分割窗口
           

Custom vim operating characteristics:

注意:在末行模式下的设定,仅对当前vim进程有效;

   永久有效:
       全局:/etc/vimrc
       用户个人:~/.vimrc
       
   1、行号
       显示:set number, 简写为set nu
       取消显示:set nomber, set nonu
   2、括号匹配高亮
       匹配:set showmatch, set sm
       取消:set nosm
   3、自动缩进
       启用:set ai
       禁用:set noai
   4、高亮搜索
       启用:set  hlsearch
       禁用:set nohlsearch
   5、语法高亮
       启用:syntax on
       禁用:syntax off
   6、忽略字符大小写
       启用:set ic
       禁用:set noic
       
   获取帮助:
       :help
       :help subject


Guess you like

Origin blog.51cto.com/mageedu/2463718