vim简单的实用总结

来源:互联网 发布:巴适公交暂无数据 编辑:程序博客网 时间:2024/05/20 19:32

http://www.cnblogs.com/tears-of-ramos/p/3438089.html

介绍vim常用的四种模式:一般模式,编辑模式,指令列命令模式与可视模式。
一,一般模式
   用vim filename打开文件后直接进入的就是一般模式,在这个模式下可以用hjkl移动光标,这四个字母都是右手控制的,h往左,j往下(食指), k往上(中指),l往右,助记中指高食指低所以按k光标是往高处走,按j光标往下面走。

 

   在一般模式下最常用的是光标定位,比如光标移动到第n行,则按nG,光标移动到最后一行直接按G就行。光标定位到该行末尾按$,光标移动到该行最前面按数字0,如果按数字n再按空格则光标向后移动n个字符的距离,如果数字n再按回车则光标相下移动n行.H将光标移动到该屏幕最上方第一个字符,M移动到该屏中央的第一个字符,L移动到该屏最下方那行的第一个字符.

 

   在一般模式下经常处理行操作,比如从光标所在行开始,nyy表示复制n行,p粘贴在光标之后,大P粘贴在光标之前,ndd删除n行。其实记住y表示复制d表示删除,然后记下面的操作就很简单了,比如y1G表示复制光标所在行到第一行的所有数据,yG复制光标所在行到最后一行的所有数据,这样大家就知道ynG是指复制到哪一行的意思了,由于w代表单词或汉字所以ynw就代表从光标所在处开始复制n个单词或复制n个汉字。yn回车直的就是复制下面的n行,yn空格指的就是复制接下来的n个字符。当然还可以复制到该行开始y0,复制到该行结尾y$.删除也是同样的只是将y换成d而已,
  
   在一般模式下经常用的一个撤销是u重做是ctrl加r,如果要把光标所在行的下一行追加成一行,则按j就可以。

二,插入模式
      就是进入可以编辑的模式,常用的有4个按键可以进入。i,a,o,r大小写都可以,但是进入的位置不同,i是插入到光标所在处之前,a是插入到光标所在处之后,I是插入到这一行的最前面,A是插入到这一行的最后面,(其实a指的是after所以它每次都是在后面插入),o是插入到光标行的下一行,O是插入到光标行的上一行。r是替换光标处的字符(只能替换一个字符),R会一直取代光标所在的文字,直到按下esc为止。esc是从插入模式回到一般默式的键.插入模式就完了。

三,可视模式
  一般的复制粘贴用可视模式是最直观的也是比刚刚一般模式下复制粘贴更能满足用户感官的。主要有三种复制和删除方式,第一种光标选中多少就可以复制多少,(按字符复制)。第二种总是复制成长方形区域,(也就是按列复制)。第三种是按行复制.

1,按字符选择
   按下v之后,光标所到之处都会变成白颜色,停止光标移动之后就代表选择完了(光标可以由h,j,k,l控制),然后按y就表示把刚刚选中的白色区域复制下来了,然后到你想粘贴的地方按p或者P就可以粘贴了。如果选择完后不是按y而是按d则会把刚刚选中的白色区域删除。

2,按列选择
   ctrl+v之后再选择的话就是按照长方形的块选择了,语言不好表述试试一下就明白了,选择完成之后按y或者按d由你决定了。

3,按行选择
   按V之后就是按行选择,光标所到行都会选中,相当于nyy的作用。

四,指令列模式
   这个模式下功能最多了基本可以分为:/?这三种命令


   1,"/"和"?"表示的是搜索功能
     /后面跟要查找的字符串然后按回车键,表示从光标处向后搜索该字符串,如果要继续向后查找下一个就按n表示next,N表示向上搜索下一个;?后面跟要查找的东西,然后回车表示向光标之前查找该字符串,不过此时n表示向前查找的下一个,而N表示向后搜寻的下一个,也就是说n是跟/和?的方向是一样的,而N是跟/和?的方向相反。只需要掌握任意一种搜索法即可。


   2,":"后面可以跟的命令就太多了。介绍三种第一种替换功能,第二种窗口分割功能,第三种vim设置功能
   (1)替换
   :n1,n2s/word1/word2/g  这个命令表示在第n1行和n2行之间寻找word1然后替换成word2,最后面的g表示行内所以后查到的全部替换,如果g后面再紧接一个c表示每次替换之前系统都会提示你是否要替换。如果一直替换到文件末尾则n2可以用$表示,例如1,$s/hj/houjiao/g表示从第一行到最后一行将hj替换为houjiao,n2也可以用.替换,表示从n1行到当前位置进行查找。
  
   (2)窗口分割
   首先vim可以一次打开多个文件进行编辑,而不是用多次vi打开,因为多个vi打开的文档之间不能直接nyy和p所以,用vim file1 file2 ..就可以一次打开多个文件,在一般模式下输入 :n 表示切换到下一个档案 :N 表示切换到上一个档案进行编辑,用:files 显示这次vi打开的所有文件信息。下面引出多窗口分割,即在打开文件之后再打开多个文件并且显示在同一屏幕中,按不同窗口分割开来,具体的做法是在一般模式下输入:sp [filename] 中括号表示该项可有可无,如果后面不加文件名,表示再新窗口中再打开一个与正在编辑的文件一样的文件,如果加文件名表示在新窗口打开一个新文件。如果想在不同窗口间切换,则按ctrl + w + j切换到下面的窗口或者 ctrl + w +k切换到上面的窗口。这个功能真是强大。跟total command 那个软件都差不多了。
  
  (3)vim设置
     进入vim后如果嫌文档显示界面不友好则可以设置很多东西,比如加行号:set nu可以让你光标定位更直观,加列号:set ruler可以在右下角看到你光标此时在哪一列,又比如:set bg=dark 可以使注释行颜色鲜艳,:set backspace=2可以让你在进入插入模式后能用回格键删东西(设为0和1时不能),又比如:set hlsearch 可以使搜寻时的字符串高亮显示。所有的这些都是可以在/etc/vimrc文件里面改的,但是这个文件里面的是不全的,你要是想看能设置哪些东西在一般模式下:set all 就可以看到关于vim设置的巨多功能。


   (4)再补充一下文件的保存。 ZZ两个大写的Z表示存储后离开与:wq是一样的功能,:w是保存但是不退出,:q是离开vi 这些命令后面如果多加一个!表示强制执行,:w filename 表示将文件另存为。:n1,n2 w filename 表示将n1行到n2的内容保存到filename里面,再补充一点,如果正在vi里面想执行shell命令是不需要:q退出vi后再输入命令的,而是用:!command 就行,比如:! ls /home 就可以在vi中查看 /home 底下输出的档案信息。


   最后补充一点,当远程到服务器然后用vi打开文档时中文可能出现乱码情况这时你:set fileencoding 如果不是utf-8(因为一般设置的encoding都是utf-8的,可以用:set encoding查看)而是ansi1格式那就说明转码错误,你只需要在一般模式下按:edit ++enc=cp936然后回车基即可。

如果:set fileencoding是utf-8的那很有可能是终端显示的问题,这时你设置:set termeencoding=gbk 即可,这个不是绝对能解决问题的,因为具体与终端显示编码方式,文件内部编码方式和文件转换编码方式和locale编码方式有关,但是以上两种办法是最常见的,可以解决大部分问题。

0 0
原创粉丝点击