Vim 精析

 

让vim显示文本颜色
在用户目录下新建.vimrc文件,然后输入”syntax on”,打开语法高亮显示 命令行模式(command mode)功能键
按「a」进入插入模式后 是从目前光标所在位置的下一个位置开始输入文字
按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。
从插入模式切换为命令行模式按「ESC」键。
按数字「0」:移到文章的开头。
按「G」:移动到文章的最后。
按「$」:移动到光标所在行的“行尾”。
按「^」:移动到光标所在行的“行首”
按「w」:光标跳到下个字的开头
按「e」:光标跳到下个字的字尾
按「b」:光标回到上个字的开头
按「#l」:光标移到该行的第#个位置
如:5l,56l 移动到该行第5,56个位置 「x」: 每按一次,删除光标所在位置的“后面”一个字符。
「nx」: 例如,「6x」表示删除光标所在位置的“后面”6个字符。
「X」: 大写的X,每按一次,删除光标所在位置的“前面”一个字符。
「nX」: 例如,「20X」表示删除光标所在位置的“前面”20个字符。
「dd」: 删除光标所在行。
「ndd」: 从光标所在行开始删除n行
「yw」: 将光标所在之处到字尾的字符复制到缓冲区中。
「nyw」: 复制n个字到缓冲区
「yy」: 复制光标所在行到缓冲区。
「nyy」: 例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字。
「p」: 将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。
「r」: 替换光标所在处的字符。
「R」: 替换光标所到之处的字符,直到按下「ESC」键为止。
「u」: 如果您误执行一个命令,可以按下「u」回到上一个操作。按多次“u”可以执行多次回复。
「cw」: 更改光标所在处的字到字尾处
「cnw」: 例如,「c3w」表示更改3个字
「ctrl」+「g」 列出光标所在行的行号。
「nG」:例如,「15G」,表示移动光标至文章的第15行行首。
Last line mode下命令简介
在使用「last line mode」之前,请记住先按「ESC」键确定您已经处于「command mode」下后,再按「:」冒号即可进入「last line mode」
:w filename (将文章以指定的文件名filename保存)
: wq (输入「wq」,存盘并退出vi)
: q! (输入q!, 不存盘强制退出vi)
:n 如输入数字15,再回车,就会跳到文章的第15行。
:/关键字 先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往后寻找到您要的关键字为止。
: ?关键字 先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往前寻找到您要的关键字为止。
行号与文件
命令模式下,可以规定命令操作的行号范围。数值用来指定绝对行号;字符“.”表示光标所在行的行号;字符“$”表示正文最后一行的行号;简单的表达式,例如“.+5”表示当前行往下的第 5 行。例如:
:345 将光标移到第 345 行
:345w file 将第 345 行写入 file 文件
:3,5w file 将第 3 行至第 5 行写入 file 文件
:1,.w file 将第 1 行至当前行写入 file 文件
:.,$w file 将当前行至最后一行写入 file 文件
: .,.+5w file 从当前行开始将 6 行内容写入 file 文件
:1,$w file 将所有内容写入 file 文件,相当于 :w file 命令
在命令模式下,允许从文件中读取正文,或将正文写入文件。
例如:
:w 将编辑的内容写入原始文件,用来保存编辑的中间结果
:wq 将编辑的内容写入原始文件并退出编辑程序(相当于 ZZ 命令)
:w file 将编辑的内容写入 file 文件,保持原有文件的内容不变
:a,bw file 将第 a 行至第 b 行的内容写入 file 文件
:r file 读取 file 文件的内容,插入当前光标所在行的后面
:e file 编辑新文件 file 代替原有内容
:f file 将当前文件重命名为 file
:f 打印当前文件名称和状态,如文件的行数、光标所在的行号等
恢复文件,该文件被删除,若意外退出,而没有保存文件的最新修改内容,则可以使用恢复命令:
:recover 恢复文件也可以在启动 vi 时利用 -r 选项。
:e 文件名 编辑另一文件
:e ! 重新编辑文件,放弃任何改变
:sh 执行sh,结束后回到编辑
:! 命令 执行命令后回到编辑
:n 编辑下一文件
:n 文件表 重新定义待编辑文件表
set 设置 vi 的选项,例如
: set nu 表示每行前显示行号,在选项前加no则表示清除该选项,例如
:set nonu 表示每行前不显示行号,下面是一些常用的选项:
:set ai 自动缩进
:set aw 编辑下一文件前自动存盘
:set ic 查找字符串时不区分大小写
:set nu 每行前显示行号
:set sm 输入)及}时显示与之配对的( 或 {
:set slow 插入时延迟屏幕刷新
:set ws 使查找能绕过文件尾从头进行
:set wa 写文件之前不作对文件的检查
常见问题及应用技巧
1.在一个新文件中读/etc/passwd中的内容,取出用户名部分。
vi file :r /etc/passwd 在打开的文件file中光标所在处读入/etc/passwd
:%s/:.*//g 删除/etc/passwd中用户名后面的从冒号开始直到行尾的所有部分。
您也可以在指定的行号后读入文件内容,例如使用命令“:3r/etc/passwd”从新文件的第3行开始读入/etc/passwd的所有内容。
我们还可以使用以下方法删掉文件中所有的空行及以#开始的注释行。
#cat squid.conf.default | grep -v ‘^$’ | grep -v ‘^#’
2.在打开一个文件编辑后才知道登录的用户对该文件没有写的权限,不能存盘,需要将所做修改存入临时文件。
vi file :w/tmp/1保存所做的所有修改,也可以将其中的某一部分修改保存到临时文件,例如仅仅把第20~59行之间的内容存盘成文件/tmp/1,我们可以键入如下命令。
vi file
:20,59w /tmp/1
3.用VI编辑一个文件,但需要删除大段的内容。
首先利用编辑命令“vi file”打开文件,然后将光标移到需要删除的行处按Ctrl+G显示行号,再到结尾处再按Ctrl+G,显示文件结尾的行号。
:23,1045d假定2次得到的行号为23和1045,则把这期间的内容全删除,也可以在要删除的开始行和结束行中用ma、mb命令标记,然后利用“:’a,’bd”命令删除。
4.在整个文件的各行或某几行的行首或行尾加一些字符串。
vi file :3,$s/^/some string / 在文件的第一行至最后一行的行首插入“some string”。
:%s/$/some string/g 在整个文件每一行的行尾添加“some string”。
:%s/string1/string2/g 在整个文件中替换“string1”成“string2”。
:3,7s/string1/string2/ 仅替换文件中的第3行到第7行中的“string1”成“string2”。
注意: 其中s为substitute,%表示所有行,g表示global。
5.同时编辑2个文件,拷贝一个文件中的文本并粘贴到另一个文件中。
vi file1 file2 yy 在文件1的光标处拷贝所在行
:n 切换到文件2 (n-next)
p 在文件2的光标所在处粘贴所拷贝的行
:n 切换回文件1
6.替换文件中的路径。
使用命令“:%s#/usr/bin#/bin#g”可以把文件中所有路径/usr/bin换成/bin。也可以使用命令“:%s//usr/bin//bin/g”实现,其中“”是转义字符,表明其后的“/”字符是具有实际意义的字符,不是分隔符。  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值