美文网首页2017届西安思沃大讲堂
以思维的速度编辑文本-快捷键&Vim

以思维的速度编辑文本-快捷键&Vim

作者: TaTas | 来源:发表于2016-12-06 22:18 被阅读33次

    一、命令行文本操作快捷键

    1. Mac文本操作通用快捷键

    Ctrl + A 跳至行首
    Ctrl + E 跳至行尾
    Ctrl + F 前进一个字符
    Ctrl + B 后退一个字符
    Ctrl + H 回删一个字符
    Ctrl + D 删除当前字符
    Ctrl + K 删除至行尾

    2. iterm专用Ctrl系列快捷键

    Ctrl + W 回删一个单词
    Ctrl + Q 清空当前行,等待下条命令运行完毕,自动将刚才清空的命令显示出来
    Ctrl + U 剪切一行
    Ctrl + Y 粘贴一行
    Ctrl + C/G 保留当前命令,新建一行
    Ctrl + S 后向命令搜索
    Ctrl + R 前向命令搜索
    Ctrl + L 清屏
    Ctrl + P 上翻历史命令
    Ctrl + N 下翻历史命令

    Ctrl + x + e 进入vim编辑当前命令

    3. iterm专用Option系列快捷键

    需要设置iterm的profile,将Option键设置为Esc

    Option + F前进一个单词
    Option + B后退一个单词
    Option + D删除一个单词
    Option + W删除到行首
    Option + . 自动补全上一条命令的最后一个参数

    4. 其他Tips

    • d 显示历史跳转目录,然后按相应数字键进行跳转目录
    ➜  index git:(master) d
    0   ~/work/index
    1   ~/work/casa-listing-service
    2   /usr/local/etc/nginx
    
    • r {target}={replace} 重复上条命令 并替换掉上条命令部分字符;参数为空时,重复执行上条命令
    ➜  ~ echo casa
    casa
    ➜  ~ r casa=myfun
    echo myfun
    myfun
    
    • ack 文件内容快速搜索
    • cmd+\ 显示光标位置

    二、Vim入坑指南

    image

    主流编辑器的学习曲线图

    一旦你意识到Vim的强大,你就踏上了不停发掘它们潜力的漫漫长路。你不停地改进自己的配置文件,你不停地搜索更好的插件,甚至有一天你开始动手写自己的插件。就像剑客保养自己的剑一样,你也甘心花时间提升你的Vim。经年累月,不知不觉,你已经在那把剑上倾注了你的灵魂。

    用Vim就像吸食毒品,慢慢地就会上瘾。它会带给你渐渐强烈的快感,但你也向它献出了自己的灵魂。这时,你只能称它为神器。

    Real Vim ninjas count every keystroke.

    vimgolf put 576c778ea4896a561b01b4f2
    

    1. 更好的操作习惯

    • ZZ == :x == :wq
    • Ctrl + [ == ESC
    • hjkl ==(←↓↑→)
    • . : 重复执行上次的修改
    • u : undo
    • Ctrl + r : redo

    2. 普通(normal)模式

    (1)移动(Motion)

    普通移动:

    hjkl :←↓↑→
    + : 跳转至下一行非空行首
    - : 跳转至上一行非空行首
    ^ :跳转至当前行非空行首
    0 : 跳转至行首
    $ : 跳转至行尾
    e : 跳转至单词尾部
    ge : 反向跳转至单词尾部
    w : 正向跳转至单词头部
    b : 反向跳转至单词头部
    }/): 正向跳转至段落尾部(有差别)
    {/(: 反向跳转至段落尾部(有差别)
    gg : 跳转至首行
    G : 跳转至尾行
    M : 跳转中间行
    % : 在开闭标签内跳转() {} [] <>
    

    行级查找移动:

    f{char} : 将光标正向移动到{char}上
    F{char} : 将光标反向移动到{char}上
    t{char} : 将光标正向移动到{char}前
    t{char} : 将光标反向移动到{char}后
    ; : 重复上次移动
    , : 回退上次移动
    

    全文查找移动:

    /{target} : 查找文本
    n : 正向跳转
    N : 反向跳转
    * : 查找光标所在单词的下一处
    

    标签移动

    m{a-zA-Z} : mark标记   
    `{标记符} : 跳转至相应标记
    默认标记:
    `` : 跳转之前的位置(Ctrl + o)
    `. : 上次修改的地方
    `^ : 上次插入的地方
    `[ : 上次修改或复制的起始位置
    `[ : 上次修改或复制的结束位置
    `< : 上次高亮选区的起始位置
    `> : 上次高亮选区的结束位置
    

    (2)文本操作(Action)

    使能文本操作(Do-Action):

    d : delete 
    y : yank/copy
    c : change
    

    即时文本操作(Instant-Action):

    前:光标前;后:光标后

    p : (后)put/paste
    P : (前)put/paste
    x : (后)删除字符
    X : (前)删除字符
    s : 删除字符并进入插入模式
    S : 删除当前行并进入插入模式
    r : 替换当前字符
    R : 连续替换输入字符
    Y=yy : 复制当前行
    dd : 删除当前行
    D=d$ : 删除至行尾
    C=c$ : 修改至行尾
    o : 在当前行下插入一行
    O : 在当前行上插入一行
    J : join将下一行与当前行连起来
    . : 重复上传修改
    

    (3)文本对象(Object)

    分隔符文本对象
    (
    {
    [
    <
    "
    '
    `
    t(tag标签)
    
    范围文本对象
    w : word
    W : String
    s : sentence
    p : paragraph
    
    文本对象范围(Range)
    i : inside
    a : around
    

    (4) 普通模式命令语法

    1. {n}{Instant-Action}

    5dd : 删除五行
    5p : 将寄存器的内容在光标后粘贴5遍
    5x : 正向删除5个字符

    1. {n}{Do-Action}{Motion} or {Do-Action}{n}{Motion}

    2dl(d2l) : 正向删除2个字符
    2cw(c2w) : 正向删除两个单词并进入插入模式

    1. {n}{Do-Action}{Range}{Object} or {Do-Action}{n}{Range}{Object}

    3daw(d3aw) : 正向删除三个单词(包括单词后面的空格)
    ciw(ciw) : 正向删除一个单词(不包括空格)并进入插入模式

    3. 可视(Visual)模式

    可视模式命令(Vcmd):

    • v :激活或者关闭面向==字符==的可视模式
    • V :激活或者关闭面向==行块==的可视模式
    • Ctrl + v :激活或者关闭面向==列块==的可视模式
    • gv :重选上次选择区域
    • o :切换高亮区域选择端

    惯用用法

    • {Vcmd}{n}{Motion}{Action}
    v3jd: 向下选中3行删除
    v3lp: 向右选择3个字符剪切掉,然后将寄存器的值粘贴
    
    • {Vcmd}{n}{Range}{Object}{Action}
    v2iwd :正向选择两个单词删除
    

    建议:尽可能使用普通模式命令操作文本,除非迫不得已。

    4.插入(Insert)模式

    (1) 普通模式切入插入模式

    i : (前)insert
    I : 在行首插入
    a : (后)append
    A : 在行尾插入
    

    (2) 文本操作快捷方式

    Ctrl + h : 回删一个字符
    Ctrl + w : 回删一个单词
    Ctrl + u : 回删至行首
    Ctrl + r + " : 快速将默认寄存器中的值粘贴
    

    (3) 快速切换普通模式

    Ctrl + [ : Esc
    Ctrl + o : 从插入模式切换到普通模式,执行一条命令后自动切换回插入模式
    

    5.寄存器

    "{Register} : 引用寄存器

    "ayy // 将当前行复制到a寄存器中
    "ap // 普通模式下将a寄存器的内容粘贴出来
    Ctrl + r + a // 插入模式下将a寄存器的内容粘贴出来
    

    常用寄存器

    • "" : 默认寄存器,执行任何{Action}都是对该寄存器操作
    • "0 : 复制专用寄存器,执行y命令后,会同时将文本存储在""和"0中,其他操作则只会存储在""
    • "{1-9} : 压栈寄存器:每执行一次==删除/修改Action==后会将""中的内容压入其中
    • "{a-z} : 有名寄存器
    • "_ : 黑洞寄存器
    • "*/+ : 系统剪切板寄存器
    • “= : 表达式寄存器

    6.命令(Command)模式

    命令行模式是VIM继承自老祖先ed ex的遗产,有着相当强大的功能。
    普通模式适合近距离作战,命令模式适合远距离作战。

    :1,5t$ //将第一行到第五行拷贝到最后一行 
    

    (1)行[line]

    n : 绝对行  
    . : 当前行  
    .+(-)n : 当前行向下(上)偏移n行  
    $ : 最后一行  
    % : 所有行  
    ‘< : 高亮区域起始行  
    ‘> : 高亮区域结束行  
    

    (2)范围[Range]

    [StartLine,EndLine]
    

    可以进入视图模式选中行,然后进入命令模式,会默认选中其高亮部分

    (3)操作命令

    : [range] delete/d [x] 将选定区间的行删除 并寄存到x中
    : [range] yank/y [x] 将选定区间的行复制 并寄存到x中
    : [line] put [x] 将选定寄存器x中数据粘贴到指定行下
    : [range] join /j 将选定行连接
    : [range] t [line] 将选定区间行的内容复制到指定地址
    : [range] move/m [line] 将选定区间行的内容移动到指定地址
    : [range]s/target/repalce 替换指定行内的target到replace
    : [range]normal[NormalCmd] 在指定行内执行普通模式的命令
    

    可以用"|"来连接多条命令,一起执行

    :1m$|$-1m0 // 将第一行和尾行互换
    

    7.宏

    宏用于对一系列相似的行、段落、文件进行重复性的修改。
    宏可以把任意数目的按键操作录制到寄存器,用于之后的回放。

    宏命令

    qa //将宏录制到a寄存器中
    q // 结束本次宏的录制
    :reg a // 查看宏的内容
    {n}@a // 串行的将a寄存器中的宏执行n遍
    :[range]normal @a//并行的将宏在选择的文本上执行
    qA // 可以给宏追加命令

    8 推荐资源

    相关文章

      网友评论

        本文标题:以思维的速度编辑文本-快捷键&Vim

        本文链接:https://www.haomeiwen.com/subject/pbzrmttx.html