• vi/vim


    跳到文件尾:1,G  2, :$ 

    跳到文件头: 1, gg  2, :1

    跳到指定的行: :n

    查看文件编码:$ :set fileencoding

    :set fileencoding=utf-8

    显示当前文件名:   :f  或者 ctrl +G

    显示文件当前路径:    :pwd 或者 :!pwd (命令模式下执行shell命令pwd会遮挡文本,不建议使用)

    光标如何回到上一次位置: '' (两个单引号) 或者 ctrl + 0  或者ctrl + i

    选定: v

    vim已经启动 输入 :e file 可以再打开一个文件,并且此时vim里会显示出file文件的内容。 3.同时显示多个文件: :sp //水平切分窗口 :vsplit //垂直切分窗口

    在文件之间切换: 1.文件间切换 Ctrl+6 //两文件间的切换 :bn //下一个文件 :bp //上一个文件 :ls //列出打开的文件,带编号 :b1~n //切换至第n个文件 对于用(v)split在多个窗格中打开的文件,这种方法只会在当前窗格中切换不同的文件。 2.在窗格间切换的方法 Ctrl+w+方向键——切换到前/下/上/后一个窗格 Ctrl+w+h/j/k/l ——同上 Ctrl+ww——依次向后切换到下一个窗格中;关闭窗口: ctrl+w+o

    统计某关键字出现的次数:

    :%s/key/&/gn

    永久显示行号:

    $ vim   ~/.vimrc

    打开后添加set  nu,保存退出

    取消行号显示:

    :set  nonu

    大小写检索:默认是区分大小写的,

    :set ignorecase 或者 :set ic

    恢复区分大小写:

    :set noignorecase 或者 :set noic

    单次关键字查询不区分大小写:

    /search-textc

    将当前文件[或者部分]内容复制到另外一个文件中

    比如:把test1.txt第一行到第五行复制到 ~/test2.txt(会覆盖test2.txt原内容)

    vi test1.txt esc命令行模式下

    :1,5 w ~/test2.txt

    把test1.txt第一行到第五行追加到到 ~/test2.txt

    :1,5 w>> ~/test2.txt

    同一个文件内的复制

     命令模式下执行shell命令

    :!cmd

    在windows下编辑的脚本在linux系统下执行$ sh -x tmp.sh

    +log_dir=$'/tmp '

    原因:windows下以“ ”作为换行,unix/linux下以“ ”作为换行。$ cat -A tmp.sh可以看到隐藏的符号。

    解决方法:在命令模式下

    1) :set fileformat=unix

    2) :%s/^M$//g

    :w

    ^M 注意要用 Ctrl + V Ctrl + M 来输入

    3) tr -d ' ' < tmp.sh > result.sh  (注:将tmp.sh作为输入用tr处理,再输出到result.sh中)

    4) $ dos2unix filename

    5) $ sed -i ’s/^M//’ tmp.sh   (注:-i 直接在源文件中修改)

    从当前光标处,n向上搜索,N向下搜索

    ?keyvalue

    从当前光标处,n向下搜索,N向上搜索

    /keyvalue

    vi中怎么搜索复制出来的字符串。停留在要查找的单词的任意字母上面

    shift+*

    或者 让光标停留在单词的第一个字母上, 然后输入yw拷贝该单词, 然后输入 / (Ctrl + R) 0 (即 /”0),回车, 就查找到了第一个匹配的单词, 并且可以通过 n  或  N 进行上一个或下一个的匹配。

    Ctrl + r 是指使用寄存器 , 你会发现先输入/ , 然后输入 Ctrl + r , 会立刻变为 “ , 即寄存器的前缀, 然后 ”0 就可以理解了吧? 合起来就是 /“0, 就是查找刚才复制的那个单词, 不懂的请查看上一个帖子:

    http://blog.csdn.net/ballack_linux/article/details/53078836

    对文本按行排序:

    :sort

    删除替换:

    :[range]g/<pattern>/cmd

    [range]代表范围,可以指定(eg.  :1,3g/linux/c)也可以不用指定(eg.  :g/linux/c)

    cmd有很多,比如d,删除命令;c,删除并且进入insert模式;s,替换命令

    如g/test/s/aaa/bbb/ 在文中查找包含test的行,并且把该行中的aaa替换成bbb,也可以把aaa省略,
    g/test/s//bbb/,这时候表示的是把test替换成bbb指令

    1. 要查找相同的两行,先将内容排序,然后查找前一行等于后一行者
    :sort
    /^(.+)$ 1

    2. 删除重复行(先排一下序):
    :sort
    :g/^(.+)$ 1/d 

    vi/vim 删除:一行, 一个字符, 单词, 每行第一个字符 命令

    x        删除当前光标下的字符
    dw       删除光标之后的单词剩余部分。
    d$       删除光标之后的该行剩余部分。
    dd       删除当前行。
    
    c        功能和d相同,区别在于完成删除操作后进入INSERT MODE
    cc       也是删除当前行,然后进入INSERT MODE

    设置tab键为4个空格,且自动对齐
    $vi /etc/vim/vimrc
    set ts=4
    set expandtab
    set autoindent

     翻页:

    CTRL-F 向前一页 CTRL-B 向后一页

    ta 跳到下一个a 前面
    fa 跳到下一个a

    num% 调到百分之num

    num| 跳到第几列

    CTRL-E 向下一行
    CTRL-Y 向上一行

    vim 130 cmd

    字符乱码:

    ~/.vimrc 文件中添加以下内容:
    set encoding=utf-8 fileencodings=ucs-bom,utf-8,cp936

    JSON格式化

    command! JsonFormat :execute '%!python -m json.tool'
     | :execute '%!python -c "import re,sys;chr=__builtins__.__dict__.get("unichr", chr);sys.stdout.write(re.sub(r"\u[0-9a-f]{4}", lambda x: chr(int("0x" + x.group(0)[2:], 16)).encode("utf-8"), sys.stdin.read()))"'
     | :set ft=javascript
     | :1

    打开json文件:

    :JsonFormat

    @2020-05-07 20:05:59

    vim插入模式下打出特殊字符:

    在插入模式下,按CTRL+V会显示^,然后按特殊按键可以输入特殊字答符
    如CTRL+V,出现^,按F1输入表示<F1>键的特殊字符

    ^A用脚本awk或python可以把分隔符设置为'x01',在vim中选中时,用ctrl+a来表示这个分隔符。

    ^R   CTRL+V,CTRL+r

    恢复.swp文件:vim -r xxxx 进去再 :wq 退出编辑模式,改文件已经回复可编辑状态,再 rm -rf .xxxx.swp 删除掉隐藏文件后继续编辑源文件

  • 相关阅读:
    一文解读RESTful (转)
    一文解读Redis (转)
    一文解读JSON (转)
    一文解读单点登录 (转)
    一文解读雪碧图 (转)
    一文解读骨架屏 (转)
    一文解读MPA/SPA(转)
    一文解读HTTP2 (转)
    一文解读HTTP (转)
    HTML5中Video标签无法播放mp4的解决办法
  • 原文地址:https://www.cnblogs.com/guxuanqing/p/4889828.html
Copyright © 2020-2023  润新知