• vim使用技巧


    1、vi编辑

    vi编辑文本有三种常用模式:命令模式,编辑模式,末行模式

    命令模式移动光标方式
    # 纵向移动
    G			#快速移动到文本行尾
    gg			#快速移动到文本行首
    2gg			#快速移动第二行
    2G			#快速移动第二行
                
    # 横向移动  
    $			#快速移动到一行的行尾
    0 或 ^		        #快速移动到一行的行首
    
    命令模式复制内容方式
    dd			# 默认剪切一行内容
    2dd			# 从当前光标往下剪切2行内容
    yy			# 默认复制一行内容  copy
    2yy			# 从当前光标往下复制2行内容
    p			# 从当前光标下黏贴一遍内容
    2p			# 从当前光标下黏贴2遍内容
    u			# 撤销文本的操作
    ctrl+r		        # 撤回文本的操作
    dG			# 表示从光标位置到文本末尾内容删除
    r			# 表示替换单个字符
    
    命令模式进入编辑模式
    i			# 表示当前光标位置前插入,进入编辑模式
    a			# 表示当前光标位置后插入,进入编辑模式
    o			# 表示当前光标位置另起下一行插入,进入编辑模式
    O			# 表示当前光标位置另起上一行插入,进入编辑模式
    I			# 表示当前光标位置所在行的行首,进入编辑模式
    A			# 表示当前光标位置所在行的行尾,进入编辑模式
    C(大写)		        # 表示从光标所在位置到行尾内容剪切,进入编辑模式
    cc			# 表示剪切光标所在行,进入编辑模式
    
    末行模式命令操作
    :			# 从命令模式进入末行模式
    :q			# 未编辑时,退出
    :q!			# 强制退出vim
    :wq			# w 保存内容
    :set nu		        # 显示行号
    :set nonu	        # 取消显示行号
    /xxx		        # /表示从当前光标下搜索内容		按n 向下继续搜索 
    ?xxx		        # ?表示从当前光标下搜索内容		按n 向下继续搜索 
    /xxxc		        # 搜索内容后加c 表示搜索忽略大小写
    :set ic		        # 表示在此次编辑,搜索忽略大小写
    :set noic	        # 表示在此次编辑,取消忽略大小写
    

    2、vim的特殊用法

    ​ vim特点:对编辑文本内容不同的高亮显示

    如何取消搜索后高亮?
    使用/搜索内容时,会对搜索到内容进行高亮,永久保存
    
    # 取消搜索后高亮
    / 搜索文本内容没有的内容
    
    vim快速移动或复制数据
    :2,4move9	—— # 将第2行到第4行的内容移动到第9行的下一行
    :2,4copy9	—— # 将第2行到第4行的内容复制到第9行的下一行
    
    对文本内容进行批量替换
    :%s#oldboy#oldgirl#g	# 表示文本内容oldboy替换为oldgirl
    符号说明:               
    %			# 表示文本的全部内容
    s		        # 表示替换 substitute
    g			# 表示把每一行匹配到内容替换
                             
                          
    替换内容说明:          
    :2,4s#oldboy#odgirl#g	# 表示只替换第2行到第4行的oldboy
    :%s#oldboy#oldgirl#		# 表示替换全部行首个oldboy
    
    如何批量修改内容
    # a、批量编辑注释内容
    第一个步骤:进入批量编辑状态(视图模式)
    	ctrl+v    --- 进入试图模式
    	-- VISUAL BLOCK --		 
    第二个步骤:批量选中要编辑的行
    	方向键上下选择要编辑的行
    第三个步骤:进行编辑修改
    	shift+i--进行单行编辑
    第四个步骤:实现批量修改
    	按esc
    
    # b、批量删除注释内容
    第一个步骤:进入批量编辑状态(视图模式)
    	ctrl+v    --- 进入试图模式
    	-- VISUAL BLOCK --		 
    第二个步骤:批量选中要编辑的行
    	方向键上下选择要删除的行
    第三个步骤:批量删除内容
    	按键盘字母d 或者 按键盘字母x
    

    3、vim编辑原理

    vim编辑错误解决(重点)
    # 1). vim命令后面一定要接文件
    # 2). vim只能编辑存在的目录中的文件,可以创建文件
    # 3). 编辑文件突然非正常状态退出
    	编辑一个文件,在没有退出前,直接断开远程连接
    	再次打开文件编辑会有警告提示	—— 产生了一个临时文件
    	Swap file ".text.swp" already exists!
    	[O]pen Read-Only, (E)dit anyway, (R)ecover, (D)elete it, (Q)uit, (A)bort:
    	O		(大写)进入vim模式,只能读文件内容,不能修改文件	—— "text" [readonly] 19L, 132C 
    	E		(大写)强行进入编辑模式
    	R		(大写)恢复关闭之前对文件的操作内容
    	D		(大写)删除临时文件
    	Q/A		(大写)退出			
    
    vim编辑文本内容原理

    # 1).使用vim编辑一个文件  —— vim text
    # 2).判断文件所在目录下是否有文件相关的临时文件
        拥有:会有报错信息提示
        没有:正常进入命令模式
    # 3).打开文件,产生临时文件
    # 4).正常编辑文件
    # 5).编辑完成,是否正常保存文件退出
        正常:编辑模式——ESC——末行模式—— :wq 保存退出
        异常:临时文件将会永久保留
    
    如何处理vim异常的流程
    # 1).查看文件信息  —— 按大写O查看
    # 2).确认文件内容是否需要恢复
        需要:按大写R恢复数据
        不要:按大写E进入编辑
    # 3).删除临时文件
        a、按大写D删除临时文件
        b、rm -rf .text.swp
    

    4、如何直接对文件内容编辑

    1).文件中添加一行信息
    echo 'oldboy'  >> text		# 文件内容末行追加内容
    
    echo命令说明
    # a.向屏幕上输出内容
    	echo 'hello word'
    # b.输出连续的内容1,2,3......10
    	echo {1..10}		# {} 表示输出的内容  .. 表示输出从哪到哪
    	1 2 3 4 5 6 7 8 9 10
    	
    	echo {01..10}		# 可以显示同位数
    	01 02 03 04 05 06 07 08 09 10
    # c.输出显示不连续的内容
    	输出奇数
    	echo {01..10..2}  # 01 03 05 07 09
    	输出偶数
    	echo {02..10..2}  # 02 04 06 08 10
    
           
    # 2).文件中添加多行信息	—— cat命令
    	cat >>text << EOF	# EOF表示开始结束标志(任意)
    	> oldboy
    	> EOF
    
    {} 的使用技巧
    # 1.输出连续的字符
     echo {1..10}
    # 2.在目录下创建多个文件
    touch oldboy{01..5}
    
    # 3.在同一个目录下创建多个目录
    mkdir -p oldboy01/oldgirl{01..5}
    mkdir oldboy/oldgirl{1..5}/olddog
    

    5、过滤筛选文件内容命令

    ​ 四剑客命令初步认识

    老大:awk		—— 对数据内容统计分析
    老二: sed		 —— 对数据内容进行替换
    老三:grep		—— 对数据内容进行过滤
    老四:find		—— 查找文件
    

    grep 命令过滤信息操作

    # 测试文件信息
    [root @matter ~ ]# cat text
    oldboy01
    oldgirl01
    olddog01
    oldboy02
    oldgirl02
    olddog02
    
    1).过滤文件中的oldboy
        [root @matter ~ ]# grep oldboy text
        oldboy01
        oldboy02
    
    2).过滤文件中的oldgirl的一行和他上一行的内容
        [root @matter ~ ]# grep oldgirl text -B 1		—— B before 在....之前
        oldboy01
        oldgirl01
        --
        oldboy02
        oldgirl02
    
    3).过滤文件中的oldgirl的一行和他下一行的内容
        [root @matter ~ ]# grep oldgirl text -A 1		—— A after 在...之后
        oldgirl01
        olddog01
        --
        oldgirl02
        olddog02
    
    4).过滤文件中的oldgirl信息的下一行和下一行信息也显示
        [root @matter ~ ]# grep oldgirl text -C 1		-C center 居中
        oldboy01
        oldgirl01
        olddog01
        oldboy02
        oldgirl02
        olddog02
    
    5).统计过滤内容出现的次数
        [root @matter ~ ]# grep oldgirl text -c		-c count 计数
    
    # sed 命令过滤信息操作
        [root @matter ~ ]# sed -n '/oldgirl/p' text
        oldgirl01
        oldgirl02
    # sed过滤格式: sed -n '/过滤内容/p' 文件
        p	将过滤的内容信息输出
        -n	取消对文件内容的输出,只显示过滤匹配的内容
    
    # awk 命令过滤信息操作
        [root @matter ~ ]# awk '/oldgirl/' text
        oldgirl01
        oldgirl02
    

    6、文件内容直接替换

    sed 命令替换文件信息

    # 需求文件中oldboy替换为olddog
    vim命令替换:%s#oldboy#olddog#g
    sed命令替换:'s#oldboy#olddog#g'
    
    # sed默认显示替换内容,对文件内容并不替换
    [root @matter ~ ]# sed 's#oldboy#oldgirl#g' text	
    oldgirl01
    oldgirl01
    olddog01
    oldgirl02
    oldgirl02
    olddog02
    
    # 参数 -i sed真正的替换文件内容
    [root @matter ~ ]# sed 's#oldboy#oldgirl#g' text -i
    [root @matter ~ ]# cat text
    oldgirl01
    oldgirl01
    olddog01
    oldgirl02
    oldgirl02
    olddog02
    
    # sed命令默认是假装替换内容信息并显示
    # sed -i	真正文件内容替换
    

    tr 命令 —— 只能假装替换,除非使用重定向

    # tr 命令格式:tr 要替换的内容 	替换的内容  < 文件
    
    echo 'python123'|tr 'python' 'linux'   # linuxx123
    	
    echo 'python123'|tr "a-z" "A-Z"   # PYTHON123
    

    tr替换原理

    [root @matter ~ ]# cat text 
    oldboy01
    oldgirl02
    [root @matter ~ ]# tr 'oldboy' 'oldgirl' < text
    ldgir01
    ildgirl02	
    # 为什么替换内容乱了?
    o —— o
    l —— l
    d —— d
    b —— g
    o —— i 
    y —— r
    
    # 替换信息的情况: tr命令替换信息是1对1的替换
    01. 替换的内容字符数 > 修改后的内容字符数   abcd > 123
    echo abcd|tr "abcd" "123"    # 1233
    
    02. 替换的内容字符数 < 修改后的内容字符数   abc  < 1234
    echo abcd|tr "abc" "1234"    # 123d
    
    03. 替换的内容字符数 = 修改后的内容字符数   abcd = 1234
    echo abcd|tr "abcd" "1234"   # 1234
    
    04. 极特殊情况 
    abcba 12345  54345
    c - 3
    b - 4
    a - 5
    
  • 相关阅读:
    GO学习之 为什么选择GO
    Flask学习之 Jinja2模板引擎
    排序算法之归并排序的python实现
    排序算法之快速排序的python实现
    排序算法之希尔排序的python实现
    排序算法之插入排序的python实现
    排序算法之选择排序的python实现
    Android 中正则表达式工具类
    java之从字符串比较到==和equals方法区别
    Android Studio酷炫插件(一)——自动化快速实现Parcelable接口序列化
  • 原文地址:https://www.cnblogs.com/xuanxuan360/p/12803936.html
Copyright © 2020-2023  润新知