zoukankan      html  css  js  c++  java
  • vimtutor 拾遗

     断断续续的,使用vim已经有大概4年时间,但一直停留在很低的使用层面。对于key的map,let等命令还是不懂。对插件的使用也只是停留在ctags和csope。

    最近手头一些事情总算快要告一段落,趁这个时间点,多学点vim的知识。先从vim自带的教程开始。每天大概花半个小时学习,然后做好笔记。ok,开始!

    学习vim的捷径:Do not try to memorize, learn by usage.

    删除操作:  d [number] motion

    dw: 删除整个单词,包括最后一个字符(分界符,比如空格)。此时光标在下一个单词首字母上

    de: 删除整个单词,但保留最后一个字符。此时光标在下一个单词首字母前面

    d$: 删除从光标位置开始,直到行尾的所有内容

    替换操作: c [number] motion

    r: 修改单个字母 (r - replace)

    ce: 修改整个单词  (e - end of world). 相当于删除当前单词,然后进入插入模式。待一个单词输完后自动进入normal模式。

    c$: 修改直到当前行末尾

    cw: 修改当前单词

    撤销操作:

    u: 撤销上一次操作

    U: 撤销最近一次对整行的更改

    C+r: undo the undo's

    查找和替换(substantiate)操作

    /: 向下查找; n:下一个匹配项; N:上一个匹配项

    ?: 向上超找; n/N 同上

    /word\c : 可以在查找的时候忽略大小写

    :s/old/new :  用new替换第一个匹配到的old

    :%s/old/new :  用new替换每一行首次匹配到的old。也就是说,如果一行有多个old,只替换第一个

    :s/old/new/g : 和不加g的效果一样

    :%s/old/new/g : 全部替换,不论一行有多少个

    :%s/old/new/gc : 每一次替换前会confirm用户

    :#,#s/old/new/g :对某个范围内的内容进行替换操作

     可见,%s/old/new/gc 比较通用

    文件操作:

    w filename 将当前缓冲区内容写入到filename中

    截取文件中的部分写入到新文件: 1. 进入view模式,选中需要的文本; 2. 进入command模式,发现bottom line变为 :'<,'>; 3. 输入w filename;

    读取(Retrieving)外部内容到当前文件:

    1. 外部文件: r filename

    2. 读取外部命令的输出,这个很有用,在写文档的时候,可以直接保存某些命令的输出。 比如,r !ls -a

    杂项:

    查看当前行状态:C+g

    回到上一次操作的位置:C+o (非常有用,尤其是查找的时候,回到查找前的位置)

    a : append. 在当前单词尾部插入内容

    e: 按单词向后移动

    R:进入完全替换模式,跟按下键盘的insert键效果一样。

    帮助: help vimrc-intro

    自带命令的补全: :字母 C+d 会列出所有

    查看完整的用户手册:help user-manual

    ============= cookbook ======================

    1. 删除空白行

    需求场景:从网上copy的代码,经常有很多空白行

    解决办法::g/^$/d

    2. 删除vim中的^M标志

    http://blog.csdn.net/dadoneo/article/details/6076479

    命令::%s/Ctrl+v Ctrl+m//g

    如果替换后换行消失,可使用:

    :%s/Ctrl+v Ctrl+m/\r/g

  • 相关阅读:
    重点---版本问题-Spark中的一次ClassNotFoundException排除
    SPARK-SQL内置函数之时间日期类
    [Spark SQL]Spark SQL读取Kudu,写入Hive
    hive和spark读取kudu表
    解决spark on yarn每次都传递一堆jars的问题
    Spark on YARN
    blocking IO, non-blocking IO, asychronous IO, sychronous IO
    使用set和vector去重(copy函数)
    vector元素去重uninque函数,erase函数
    copy与iterator头文件
  • 原文地址:https://www.cnblogs.com/handt/p/2767777.html
Copyright © 2011-2022 走看看