zoukankan      html  css  js  c++  java
  • Tools

    Vim

    简明 Vim 练级攻略

    基础设置

    • 在vim界面点击“:”然后进行设置,但只会在当前vim界面生效;
    • 添加相关设置在vim配置文件(例如“/etc/vimrc”或用户目录的.vimrc文件),可以永久生效;
    set ruler/noruler    # 显示/隐藏光标当前位置
    set number/nonumber    # 开启/关闭行号显示
    set cursorline/nocursorline     # 开启/关闭高亮当前行
    set cursorcolumn/nocursorcolumn    # 开启/关闭高亮当前列
    set hlsearch/no    # 开启/关闭高亮搜索结果
    set wrap/nowrap    # 开启/关闭换行
    set laststatus=2    # 显示状态栏
    

    基础操作

    #  G       移动到全文的最后一行
    #  gg      移动到全文的第一行
    #  n<Enter>    光标向下移动n行
    #  数字0或功能键Home     移动到行首
    #  符号$或功能键End        移动到行尾
    #  
    #  
    #  dd        删除当前光标所在的行
    #  ndd      删除当前光标向下的n行
    #  yy        复制当前光标所在行
    #  nyy      复制当前光标向下的n行
    #  p, P     小写字母p将已复制的内容粘贴在当前光标的下一行,大写字母P则粘贴在上一行
    #  x, X      小写字母x向后删除一个字符, 大写字母X向前删除一个字符
    #  
    #  
    #  u    复原前一个动作
    #  .     重复前一个动作
    #  
    #  
    #  vim file1,file2,file3    同时打开多个文件
    #  :open file         在新窗口中打开文件
    #  :bn                  切换到上一个文件
    #  :bp                  切换到下一个文件
    #  
    #  
    #  /word         光标之下寻找word字符串;n搜寻下一个,N搜寻上一个。
    #  ?word        光标之上寻找word字符串;n搜寻下一个,N搜寻上一个。
    #  :n1,n2s/word1/word2/g        在第n1与n2行之间寻找word1字符串,并将该字符串替换为word2
    #  :1,$s/word1/word2/g            在全文依次寻找word1字符串,并将该字符串替换为word2
    #  :1,$s/word1/word2/gc          在全文依次寻找word1字符串,并将该字符串替换为word2,替换前需要用户确认
    #  
    #  
    #  :n1,n2 w <file>        将n1到n2行的内容保存到文件
    #  :r <file>                   将文件内容添加到光标所在行之后
    #  :! <command>        暂时离开vim在指令列模式下执行外部命令并显示结果
    

    01 - 移动光标到指定行

    1. 在命令模式下输入“:n”;
    2. 在编辑模式下输入ngg或者nG,n为指定的行号。不指定行号,“gg”和“G”分别表示文档首行和尾行。
    3. 打开文件跳转到指定行:“vim +n
    • 查看当前光标所在的行,编辑模式下按“Ctrl+g”键;
    • 显示行号,在命令模式下输入“:set number”;

    02 - 自动添加Shell脚本的作者和版权信息

    在用户目录的.vimrc文件中,添加如下内容并保存

    map <F4> :call TitleDet()<cr>
    function AddTitle()
        call append(0,"#!/bin/bash")
        call append(1,"############################################################")
        call append(2,"# File Name    :    ".expand("%:t"))
        call append(3,"# Version      :    1.0.0")
        call append(4,"# Function     :    test")
        call append(5,"# Author       :    Anliven")
        call append(6,"# Last modified:    ".strftime("%Y-%m-%d %H:%M"))
        call append(7,"# Blogs        :    https://www.cnblogs.com/anliven")
        call append(8,"# GitHub       :    https://github.com/anliven/L-Shell")
        call append(9,"# Description  :    L-Shell")
        call append(10,"############################################################")
        echohl WarningMsg | echo "Successful in adding copyright." | echohl None
    endf
     
    function UpdateTitle()
         normal m'
         execute '/# Last modified/s@:.*$@=strftime(":	%Y-%m-%d %H:%M")@'
         normal ''
         normal mk
         execute '/# Filename/s@:.*$@=":	".expand("%:t")@'
         execute "noh"
         normal 'k
         echohl WarningMsg | echo "Successful in updating the copyright." | echohl None
    endfunction
    
    function TitleDet()
        let n=1
        while n < 10
            let line = getline(n)
            if line =~ '^#s*S*LastsmodifiedS*.*$'
                call UpdateTitle()
                return
            endif
            let n = n + 1
        endwhile
        call AddTitle()
    endfunction
    

    编辑脚本时,在norm 模式下按F4键即可,效果如下

    #!/bin/bash
    ############################################################
    # File Name    :    tt.sh
    # Version      :    1.0.0
    # Function     :    test
    # Author       :    Anliven
    # Last modified:    2017-08-15 23:51
    # Blogs        :    https://www.cnblogs.com/anliven
    # GitHub       :    https://github.com/anliven/L-Shell
    # Description  :    L-Shell
    ############################################################
    

    如果shell文件名发生更改,只需在编辑时重新按F4键即可自动更新相关信息。
    注意F4是否和其它快捷键设置冲突。

    03 - 同时查找两个关键字

    利用正则表达式:
    (stringA|stringB).*(stringB|stringA)

    ( -----> “”为转义字符,转义“(”
    stringA -----> 字符串A
    | -----> “”为转义字符,转义“|” 。(a|b)的意思是a或者b。
    stringB -----> 字符串B
    ) -----> “”为转义字符,转义“)”
    .* -----> "."为除换行符外的任意字符。"*"为0次或者多次。

  • 相关阅读:
    判断奇偶
    数据库中去重时:建议使用group by
    将博客搬至CSDN
    FileZilla
    Windows通过VNC连接并显示Linux桌面(Ubuntu16.04)
    springMVC 中参数绑定
    get和post的区别主要有以下几方面
    Get、Post、Put与Delete的区别
    HTTP请求地址映射
    Spring MVC 框架
  • 原文地址:https://www.cnblogs.com/anliven/p/7414061.html
Copyright © 2011-2022 走看看