VIM学习

1. VIM编辑文本时,将文件复制到缓冲区中,编辑永远在缓冲区里文件副本上作业,存储编辑结果时,将缓冲区中内容存储到永久的文件中。

2. vim有两种模式:命令模式和插入模式,一开始进入是命令模式,所有按键都代表命令,移动到文件任何地方进行编辑,或用来结束编辑回到UNIX提示符。在插入模式中,输入的东西成为文件的内容,增加新文本,或者按退格键消除错误输入。ESC键会强制进入命令模式

3. ex命令保存编辑结果, :w写入文件不离开vi, :q, :wq,:q! 消除所有编辑结果离开vi。当保存文件发生问题时,:w newfile将缓冲区写入一个新文件,然后用mv将文件替换。用:!df查看磁盘空间  用:!rm junkfile删除没用的大文件

4. vim与shell命令切换时,在vi中输入ctrl+z回到unix提示符,fg回到vi

5. 小段时间在插入模式下增加新文本,大部分时间都在编辑现有文本。

6. 命令模式下移动光标,移动命令可接受数值参数。  +到下一行的第一个字符 ,

单一的移动:h向左一个字符; j向下一行;k向上一行;l向右一个字符    左下上右hjkl,2h,2j,2k,2l。移动命令前加数字参数,4l将光标向右移动4个字符,

在一行中移动:0移到一行开头,$移到一行结尾

按照单词移动光标:w命令使光标移动一个单词,W不把标点符号视为一个单词,b使光标后退一个单词,B不把标点符号视为一个单词。例如2w,5B。向前移动一个单词b,2b,光标向后移动一个单词w,2w,3w,

移动到特定一行:G,1G到文件顶端(gg),42G到42行

7. 更改,删除,移动,复制。移动时先用d删除,再用p放置。复制时先用y做拖拽,再用p放置。x删除单个字符,cw更改单词,r

vi命令遵循如下模式:(command)(number)(text object)  d2w删除两个命令   或(number)(command)(text object) 2dw

增加文本: a和i,a是在光标后面插入文本,i是在光标前面插入文本

更改文本:更改命令c,c和光标移动命令组合使用表明会影响的文本对象,c更改光标所在位置的文本, cw从光标到这个单词的结尾,c2b从光标向前两个单词,c$从光标到行结尾,c0从光标到此行开头。更改单词cw,更改整行cc。更改字符命令r,将一个更改为另一个

删除命令:d+文本对象,(先2w移动到单词处)删除单词dw,删除一行dd,向前删除db,删除到一行的结尾或开头的d$,d0, dd删除光标所在行一整行文本,2dd删除两行,  vim下删除2到110行命令 :2,110d

删除单个字符命令:x删除光标所在位置字符,5x会删除从光标开始位置向右的5个字符

拖拽命令:y, yw复制一个单词, y$复制到行尾, 4yy复制4行 

撤销:u撤销上一个命令,p恢复删除命令(最近9次的删除动作保存在9个编号的缓冲区中)3p恢复第三个

移动文本:删除后再放置,放置命令:p将缓冲区文本放置在光标后,P命令将缓冲区文本放置在光标前。当删除或复制多行时,p命令将缓冲区文本放置在光标所在行下一行,P命令将缓冲区文本放置光标所在行的上一行

复制文本:使用y拖拽命令和放置命令p来复制

重复上一个命令:.句号命令,例如yy后删除一行,输入.会再删除一行

撤销上一个命令:u,可一直按u,一直撤销, 重做redo命令Ctrl + R

行合并命令:J 合并两行到一行 ,3J合并三行到一行

8. 快速移动位置

根据屏幕来移动:在插入模式下,输入到屏幕底端继续输入屏幕会滚动。在命令模式 ctrl+f 屏幕前翻动一页,ctrl+b 屏幕后翻动一页,ctrl+d 民间幕前翻动半页,ctrl+u 屏幕后翻动半页,

在屏幕上移动 H移动到屏幕顶端的行  M移动到屏幕中间的行  L移动到屏幕底端的行  nH nL   将光标移到第一行下面一行2H

根据行移动:ENTER移到下一行的第一个字符, +移到下一行的第一个字符,-移到上一行的第一个字符。j,k会移到下一行上一行的同位置

在当前行移动:^移到当前行第一个非空格处,0移到当前行第一个位置,n|移动第n列

根据文本块移动:e,E移到单词的结尾(以一个单词为单位向前向后移动w,W,b,B)

根据搜索模式的结果来移动: /pattern     往回搜索?pattern          n向同一个方向重复搜索

通过搜索修改文本:?和/是搜索运算符

根据行号来移动:Ctrl + G 命令在屏幕底端显示信息, 44G 移动到44行,转至文件结尾G

vim -r filename 恢复编辑缓冲区

查找和替换 :61,97s/param/_REQUEST/g   替换61到97行的所有param为_REQUEST

:s/vivian/sky/ 替换当前行第一个 vivian 为 sky

:s/vivian/sky/g 替换当前行所有 vivian 为 sky

:n,$s/vivian/sky/g 替换第 n 行开始到最后一行中每一行所有 vivian 为 sky

n 为数字,若 n 为 .,表示从当前行开始到最后一行

 

:s/str1/str2/ 用字符串 str2 替换行中首次出现的字符串 str1

:s/str1/str2/g 用字符串 str2 替换行中所有出现的字符串 str1

:.,$ s/str1/str2/g 用字符串 str2 替换正文当前行到末尾所有出现的字符串 str1

:1,$ s/str1/str2/g 用字符串 str2 替换正文中所有出现的字符串 str1

 

选中多行

Shift + V 按行选,选中一行,j或者k向下上连选中几行,  按数字键n ,后按 shift + < 整体右移n个tab

Ctrl + V 按块选中 , 按← →键向左向右练着选中多个块 

显示行号

set nu 显示行号
set nonu 不显示行号

 

 

 

posted on 2012-11-07 10:06  胡博的博客  阅读(369)  评论(0编辑  收藏  举报

导航