vi的搜索和替换

    • 搜索中进行替换
      /which  #搜索which
      cwthat #替换成that
      n #重复搜索
      . #重复替换
    • 一种类型的替换命令
      g/pattern/s/old/new/g
      第一个 g 表示是有选择的操作, pattern 指定选择行的模式, s 表示替换操作, old 是要替换的内容, new 是新内容, g 表示全局替换下面是一些例子:
      #给第一到十行加上括弧
      :1,10/.*/(&)/
      其中的
       &    代表的是搜索模式
      ~ 代表上一次替换命令中制定的替换文本
      /u 改成大写
      /l 改成小写
      /U或者/L和/e或者/E配合 将后面开始到被替换串结束或者到/e和/E为止的所有支付变成大写或者小写
      另外在vi中可以使用除了/,",和|之外的任何非字母表字符做替换命令的分隔符, 这在进行路径替换的时候非常的有用
      下面时一些例子:
         #将That or this 换成 This or that
      :%s//(That/) or /(this/)//u/2 or /l/1/
      ----
      #将句尾的child换成children
      :%s/child/([ ,.;!:?]/)/children/1/g
      ----
      #将mgi/r/abox换成mgi/r/asquare
      :g/mg/([ira]/)box/s//mg//my/1square/g <=> :g/mg[ira]box/s/box/square/g
      ----
      #将多个空格换成一个空格
      :%s/ */ /g
      ----
      #使用空格替换句号或者冒号后面的一个或者多个空格
      :%s//([:.]/) *//1 /g
      ----
      #删除所有空行
      :g/^$/d
      ----
      #删除所有的空白行和空行
      :g/^[ ][ ]*$/d
      ----
      #在每行的开始插入两个空白
      :%s/^/> /
      ----
      #在接下来的6行末尾加入.
      :.,5/$/./
      ----
      #颠倒文件的行序
      :g/.*/m0O <=> :g/^/m0O
      ----
      #寻找不是数字的开始行,并将其移到文件尾部
      :g!/^[0-9]/m$ <=> g/^[^0-9]/m$
      ----
      #将文件的第12到17行内容复制10词放到当前文件的尾部
      :1,10g/^/12,17t$
      ~~~~重复次数的作用
      ----
      #将chapter开始行下面的第二行的内容写道begin文件中
      :g/^chapter/.+2w>>begin
      ----
      :/^part2/,/^part3/g/^chapter/.+2w>>begin
      ----
      :/^part2/,/^part3/g/^chapter/.+2w>>begin|+t$

ex的命令

d 删除
m 移动
co 复制
t 复制行
p 打印
nu 显示行号
g 命令用于寻找匹配的行,然后执行相应的操作
v 反向寻找匹配的的行,然后执行相应的操作
ex中用;代替,做行分界符时会将;前面的行改变成当前行

选项设置

#设置tab宽度
:set tabstop=4

#设置缩进时移动的宽度
:set shiftwidth=4

#设置语法高亮模式
:set syntax=fvwm

#关闭备份
:set nobackup
:set nowritebackup

#建议按照如下的方式使用备份
:set backup
:set backupdir=/var/bak
:set backupext=.bak

#下面一些选项是一次听讲座的时候记录的, 具体什么意思没有记清楚, 但应该很有用的
:set nocp
:set su
:set his
:set cin
:set sm #显示匹配的括号
:set ai #自动缩进
:set cino=:ogotocsus
:set paste/nopaste
:set lbr
:set font=mb
:set cindent #打开c缩进模式


#打开语法高亮显示
:syntax on

#格式重排
=


建议的主题配置:
colo torte #图形模式
colo else #字符模式

命令与键

    • 为了防止ex对特殊键进行解释, vi中可以用C-v对其进行跳脱.如下所示:
      [RETURN]      ^M
      [ESC] ^[
      [BACKSPACE] ^H
      C-T ^T
      C-W ^W
      C-x ^X
      | 不能转义
    • map!用于在插入模式下强制映射, unmap!用于在插入模式下取消映射
    • 映射一个功能键
      :map #1 command #映射第一个功能键, 即F1
      :map [C-v][Home] command #映射home键
    • od命令可以用来以8进制方式查看文件
    • @register 执行register中的文本作为命令
    • r命令可以用于读入文件或者将命令的输出读入当前的缓冲区
      r file #读入文件
      r! ls #读入命令输出
    • 增加和减少缩进级别在vi的自动缩进模式中,可以通过下面的命令更改缩进级别
      C-T     增加一个缩进级别
      C-D 减少一个缩进级别
      ^ ^D 光标移到开始,并保留缩进级别
      0 ^D 光标移到开始,并重置缩进级别
      可以通过下面的命令设置自动缩进模式
      :set autoindent
    • <<和>>是进行缩进和反缩进的命令
      >>     把行或者块右移8个空格
      << 把行或者块左移8个空格
    • 显示控制字符
      :set list   #临时的等价命令是l
    • 启用括号匹配
      :set showmatch #:set sm
      -设置显示模式
      :normal     #正常模式
      :syntax #语法高亮模式
      :hex #十六进制模式
      :html #html模式
      :man #man模式
      :set binary #二进制模式
      :set incsearch #增量搜索模式
      :set showmode #可视模式
    • cindent 按照c的格式缩进
    • 在vi中查看c源码的时候, 可以在#include "hell.h" 在双引号中间安gf就可以打开头文件, C-o(C-t)返回.
    • 窗体分割命令
       [N] sp[lit] [position] [file]
      [N] new [position] [file]
      [N] sv[iew] [position] [file]
    • 缩写文本
      #用myurl代表http:://localhost/
      :ab myurl http:://localhost/
      #取消缩写
      :una myurl

使用ctags

:! ctags *.c      #建立tags文件
: tag name
^] #查看tag定义
命令的选项:
-d
-g
-l #指定语言
-m #为结构的成员建立索引
-t #为c的typedef建立索引
-T #为C++的typedef建立索引

    • vi中在全文前植入行号的宏
      :%s/^/^|/
      :$
      :let end=line(".")
      :|
      :let num=1
      :while num<=end
      :let line=getline(".")
      :let line=substitude(line,$,num," ")
      :call setline(".", line)
      :+
      :let num=num+1
      :endwhile

插件

    • tip of the day
    • calendar
    • jad
    • sketch

其他

    • 加密
      :X #之后输入密码, :wq退出即可, 去掉密码只要在输入提示输入密码的时候输入回车即可
    • 将dos文件转化为linux文件
      :1,$s///g
    • 在每行的行首/尾插入newstring
      #行首
      :g/^/s//newstring/g
      :%s/^/newstring/g
      行尾
      :g/$/s//newstring/g
      :%s/$/newstring/g

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值