VIM的使用

来源:互联网 发布:淘宝客自媒体推广平台 编辑:程序博客网 时间:2024/05/16 05:35

 

  • Ctrl + f      屏幕向前翻动一页(常用)
  • Ctrl + b     屏幕向后翻动一页(常用)
  • Ctrl + d     屏幕向前翻动半页
  • Ctrl + u     屏幕向后翻动半页
  • mchar   用字母char标记当前光标的位置
  • `char   移至char所标记处
  • 'char   移至char标记所在行的开头处
  • "(一个双引号)    移至当前行上一次所在位置(在光标移动之后)
  • ''(两个单引号)        移至当前行上第一次所在位置的行的开头处(在光标移动之后)
  • n<space> 按下数字后再按空格键,光标会向右移动这一行的n个字符。例如:20<space>,则光标会向右移动20个字符
  • 0            (这是数字0)移动到这一行的第一个字符处(常用)
  • $             移动到这一行的最后一个字符处(常用)
  • H            光标移动到这个屏幕最上方的那一行
  • M            光标移动到这个屏幕中央的那一行
  • L             光标移动到这个屏幕最下方的那一行
  • G            移动到这个文件的最后一行(常用)
  • nG          移动到这个文件的第n行。例如20G,则会移动到这个文件的第20行(可配合:set nu)
  • n+<h>|<j>|<k>|<l>          光标向左|下|上|右移动n次(常用)
  • n<Enter>        光标向下移动n行
  • /word             在光标之后查找一个名为word的字符串(常用)
  • ?word             在光标之前查找一个名为word的字符串
  • :n1,n2s/word1/word2/g         在第n1与n2行之间查找word1这个字符串,并将该字符串替换为word2(常用)
  • :1,$s/word1/word2/g            从第一行到最后一行查找word1字符串,并将该字符串替换为word2(常用)
  • :1,$s/word1/word2/gc          从第一行到最后一行查找word1字符串,并将该字符串替换为word2,且在替换前显示提示符让用户确认(conform)(常用)
  • x,X         x为向后删除一个字符,X为向前删除一个字符(常用)
  • nx          向后删除n个字符
  • dd          删除光标所在的那一整行(常用)
  • ndd        删除光标所在行的向下n行,例如,20dd则是删除20行(常用)
  • d1G        删除光标所在行到第一行的所有数据
  • dG         删除光标所在行到最后一行的所有数据
  • yy         复制光标所在行(常用)
  • nyy        复制光标所在行的向下n行,例如,20yy则是复制20行(常用)
  • y1G       复制光标所在行到第一行的所有数据
  • yG         复制光标所在行到最后一行的所有数据
  • y+<h>|<j>|<k>|<l>          复制光标向左|下|上|右的文本(常用)
  • p,P        p为复制的数据粘贴在光标下一列,P则为粘贴在光标列(常用)
  • J           将光标所在行与下一行的数据结合成一行
  • u           恢复前一个动作(常用)
  • i, I         插入:在当前光标所在处插入输入的文字,已存在的字符会向后退(常用)
  • a, A       添加:由当前光标所在处的下一个字符开始输入,已存在的字符会向后退(常用)
  • o, O       插入新的一行:从光标所在处的下一行行首开始输入字符(常用)
  • r, R        替换:r会替换光标所指的那一个字符;R会一直替换光标所指的文字,直到按下Esc为止(常用)
  • :w         将编辑的数据写入硬盘文件中(常用)
  • :w!        若文件属性为只读,强制写入该文件
  • :q          退出vi(常用)
  • :q!         若曾修改过文件,又不想保存,使用!为强制退出不保存文件
  • :wq        保存后退出,若为:wq!,则为强制保存后退出(常用)
  • :w [filename]         将编辑数据保存为另一个文件(类似另存新文档)
  • :r [filename]          在编辑的数据中,读入另一个文件的数据。亦即将 filename这个文件内容加到光标所在行的后面
  • :set nu                 显示行号,设定之后,会在每一行的前面显示该行的行号
  • :set nonu              与set nu相反,为取消行号
  • n1,n2 w [filename]          将n1到n2的内容保存为filename这个文件。
  • xp         交换两个字符位置
  • ddp       上下两行调换
  • d$         从当前位置删除到行尾
  • y$        从当前位置复制到行尾,如果要粘贴到其他地方 p 就可以了
  • :ab string strings
在命令行中输入":ab usa United States of America"后 ,
当你在文章中输入usa 时
United States of America 就蹦出来了
  • :map keys new_seq       定义你当前 键盘命令
  • :set [all]          如显示行号 :set nu     写程序时自动缩进 :set autoindent
  • 单个字符替换用r,覆盖多个字符用R,用多个字符替换一个字符用s,整行替换用S
  • :%s/old_word/new_word/g       这个指令是于在整个文件中替换特定字符串  
  • d l        删除当前字符(与x命令功能相同)
  • d 0       删除到某一行的开始位置
  • d ^      删除到某一行的第一个字符位置(不包括空格或TAB字符)
  • d w      删除到某个单词的结尾位置
  • d 3 w    删除到第三个单词的结尾位置
  • d b       删除到某个单词的开始位置
  • d W      删除到某个以空格作为分隔符的单词的结尾位置
  • d B       删除到某个以空格作为分隔符的单词的开始位置
  • d 7 B    删除到前面7个以空格作为分隔符的单词的开始位置
  • d)        删除到某个语句的结尾位置
  • d 4)     删除到第四个语句的结尾位置
  • d(        删除到某个语句的开始位置
  • d }       删除到某个段落的结尾位置
  • d {       删除到某个段落的开始位置
  • d 7 {    删除到当前段落起始位置之前的第7个段落位置
  • d d       删除当前行
  • d /text    删除从文本中出现“ text”中所指定字样的位置,一直向前直到下一个该字样所出现的位置(但不包括该字样)之间的内容
  • d fc      删除从文本中出现字符“c”的位置,一直向前直到下一个该字符所出现的位置(包括该字符)之间的内容
  • d tc      删除当前行直到下一个字符“ c”所出现位置之间的内容
  • D         删除到某一行的结尾
  • d $       删除到某一行的结尾
  • 5 d d    删除从当前行所开始的5行内容
  • d L       删除直到屏幕上最后一行的内容
  • d H      删除直到屏幕上第一行的内容
  • d G      删除直到工作缓存区结尾的内容
  • d 1 G    删除直到工作缓存区开始的内容
  • c l       更改当前字符
  • c w     修改到某个单词的结尾位置
  • c 3 w   修改到第三个单词的结尾位置
  • c b      修改到某个单词的开始位置
  • c W     修改到某个以空格作为分隔符的单词的结尾位置
  • c B      修改到某个以空格作为分隔符的单词的开始位置
  • c 7 B    修改到前面7个以空格作为分隔符的单词的开始位置
  • c 0      修改到某行的结尾位置
  • c)      修改到某个语句的结尾位置
  • c 4)   修改到第四个语句的结尾位置
  • c(      修改到某个语句的开始位置
  • c }      修改到某个段落的结尾位置
  • c {      修改到某个段落的开始位置
  • c 7 {    修改到当前段落起始位置之前的第7个段落位置
  • c tc     修改当前行直到下一个字符c所出现位置之间的内容
  • C         修改到某一行的结尾
  • c c      修改当前行
  • 5 c c    修改从当前行所开始的5行内容
  • . 重复上一次修改! 
  • s 将当前字符替换为一个或多个字符
  • S 将当前行替换为一个或多个字符
  • 5 s 将从当前字符开始的5个字符替换为一个或多个字符
  • :g/s1/s/s2/s3/g      第一个g表示对每一个包括s1的行都进行替换,第二个g表示对每一行包括s1的行所有的s2都用s3替换,s表示替换,s2是要被替换的字符串,它可以和s1相同(如果相同的话用//代替),s3是替换字符串
  • fx       往右移动到 x 字符上
  • Fx      往左移动到 x 字符上
  • tx       往右移动到 x 字符前
  • Tx      往左移动到 x 字符后
  • ;        分号,配合 f 和 t 使用,重复一次
  • ,        逗号,配合 f 和 t 使用,反方向重复一次
  • vi 环境选项

noautoindent            nomodelines                     noshowmode
autoprint               nonumber                        noslowopen
noautowrite             nonovice                        tabstop=8
nobeautify              nooptimize                      taglength=0
directory=/var/tmp      paragraphs=IPLPPPQPP LIpplpipnpbtags=tags /usr/lib/tags
noedcompatible          prompt                          tagstack
noerrorbells            noreadonly                      term=vt100
noexrc                  redraw                          noterse
flash                   remap                           timeout
hardtabs=8              report=5                        ttytype=vt100
noignorecase            scroll=11                       warn
nolisp                  sections=NHSHH HUuhsh+c         window=23
nolist                  shell=/bin/ksh                  wrapscan
magic                   shiftwidth=8                    wrapmargin=0
mesg                    noshowmatch                     nowriteany
在 .profile 里设置 vi 的环境选项

  • vi同时打开多个文件时,CTRL-SHIFT-6回到上一个文件,在本次vi的文件和上次vi的文件之间切换。也可以使用 :e# 进行切换。



编程相关

  • 若想查找socket()函数的man page,只需在vim中把光标至于socket()上面,然后按K(大写),vim就会自动跳转,看完man后按q再按回车又可以回到原处。
  • 去掉/etc/vim/vimrc文件中的“"syntax on “前面的双引号就能开启语法高亮