zoukankan      html  css  js  c++  java
  • Vim快捷键


    title: Vim快捷键
    date: 2018-3-25
    categories:

    • 类别
      tags:
    • 标签

    这篇不是教程,而是自己写的笔记。

    虽然网上有很多讲解vim快捷键的教程,但我还是想自己写一篇作为笔记,这里没有把所有的快捷键都列出来,也没有对快捷键进行分类,因为快捷键太多了,我一开始只是记了几个常用的,后来慢慢使用vim 就越积累越多,边用边学边记。而不是先把所有的快捷键都记下来。
    以后用的熟练了,再总结吧。

    比较完整规范的vim快捷键教程可以参考

    Vim 的各种模式

    Ctrl+[
    Ctrl+c
    等价与Esc 退出编辑模式进入普通模式(命令模式)

    Ctrl+o暂时退出编辑模式,执行一次普通模式后返回编辑模式

    插入模式:i在光标前面进行编辑
    编辑模式:a在光标后面进行编辑
    可视模式:v光标经过的地方将会被选中,可以进行x(剪切)p(粘贴)操作

    也可以在 vimrc 文件中自定义键盘映射
    inoremap jk <esc>
    这样连续按j k就等价于按Esc这个按键了

    移动光标

    hjkl分别控制光标移动
    可以配合数字使用,比如:
    20j 就是向下移动20行,
    5h 就是向左移动5个字符

    <space>光标向右移动一个字符
    n<space>光标向右移动n个字符

    <Enter>光标移动到下行行首
    n<Enter>光标向下移动n行行首

    nG 移动光标至文章的第n行行首
    或者,冒号+行号+回车,比如跳到15行就是:: 15 <Enter>

    0 光标跳到行首(可能是空字符)
    ^ 光标跳到行首
    $ 光标跳到行尾
    n$ 光标跳到下面n行的行尾

    gg 移动文件头第一个字符上(可能是空字符)
    G 移动到文件尾最后一个字符(可能是空字符)

    Ctrl+g 列出光标所在行的行号

    w 光标跳到下一个单词或标点符号开头
    e光标跳到下一个单词或标点符号尾部
    ge 光标跳到上一个单词或标点符号尾部
    b 移动到上一个单词或标点符号的开头
    2b 向后移动2个单词
    B 移动到上一个单词的开头,忽略标点符号

    H光标移动到这个屏幕上方那一行的第一个字符
    M光标移动到这个屏幕中间那一行的第一个字符
    L光标移动到这个屏幕下方那一行的第一个字符

    zz让光标所在的行居屏幕中央
    zt 让光标所在的行居屏幕最上一行 t=top
    zb 让光标所在的行居屏幕最下一行 b=bottom

    特殊的移动
    ) 移至下一个句子(sentence)首。
    ( 移至上一个句子(sentence)首。
    } 移至下一个段落(paragraph)首。
    { 移至上一个段落(paragraph)首。
    sentence 是以. ! ?为区格。
    paragraph 是以空白行为区格。

    % 这是匹配{},[],() 用的,例如光标现在在{
    只要按%,光标就会跳到相匹配的} 上。

    移动行

    : 起始行,结束行 move 目标行

    例如,把第3行移动到第7行的位置
    :3 move 7
    把第5行到第7行移动到第12行的位置
    :5,7 move 12

    或者 dd 然后在合适的地方 p 或 P

    最好还是做个键盘映射吧
    nnoremap <C-S-Up> dd<Up>P
    nnoremap <C-S-Down> ddp
    这样就可以像SublimeText 里一样使用Ctrl + Shift + 上下键 来移动光标所在的行了

    翻页

    整页翻页

    ctrl-f
    ctrl-b
    f = forword,b = backward

    翻半页

    ctrl-d
    ctlr-u
    d = down,u = up

    滚一行

    ctrl-e
    ctrl-y

    删除

    x 向后删除一个字符 (相当于del键)
    nx 向后删除n个字符

    X 向前删除一个字符(相当于backspace键)
    nX 向前删除n个字符

    d0删除光标所在处,到该行的最前一个字符
    d$删除光标所在处,到该行的最后一个字符
    D 删除当前字符至行尾。D=d$

    删除整行

    dd删除光标所在行
    ndd删除光标所在的向下n行

    dgg 删除当前行之前所有行(包括当前行)
    dnG删除光标所在行到第n行的所有数据(包括当前行)
    dG删除光标所在到最后一行的所有数据(包括当前行)

    :1,$d 删除所有行
    :8,$d 删除第8行及以后所有的行
    :2,10d 删除2-10行

    插入行

    o 在目前光标所在的下一行处插入新的一行
    O在目前光标所在处的上一行插入新的一行

    合并行

    J 可用作删除两行之间的空行,实际上是合并两行。

    :3,6j 将3-6行合并成一行

    ggvGJ 将所有行合并成一行
    gg 用于跳到行首,v 转换成 visual 模式,G 跳到最后一行,J 合并行

    复制

    yy复制光标所在的那一行
    nyy复制光标所在的向下n列

    ynG 复制光标所在行到第n行的所有数据
    yG 复制光标所在行到最后一行的所有数据

    y0 复制光标所在的那个字符到该行行首的所有数据
    y$ 复制光标所在的那个字符到该行行尾的所有数据

    p 将已复制或用dd删除的数据粘贴在光标的下一行
    P 粘贴在光标的上一行
    np 这里n代表一个数字,将剪切板上的内容复制n遍

    撤销和重做

    u 撤销前一个操作
    . 重复前一个操作
    Ctrl+r 重做上一个操作(恢复使用u撤销的内容)

    替换和查找

    /word向光标向下寻找一个名称为word的字符串
    ?word向光标向上寻找一个名称为word的字符串
    :n1,n2s/word1/word2/gn1与n2为数字,在第n1与n2行之间查找word1 这个字符串,并将该字符串替换为word2
    :1,$s/word1/word2/g从第一行到最后一行查找word1字符串,并将该字符串替换为word2
    :1,$s/word1/word2/gc从第一行到最后一行查找word1字符串,并将该字符串替换为word2 ,且在替换前提示用户确认是否进行替换

    保存和退出

    :w 保存编辑的内容
    :w!强制写入该文件,但跟对该文件的权限有关
    :q 离开
    :q! 不保存修改强制离开
    :wq 保存后离开
    :x 保存后离开
    ZZ 若文件没有更动,则不保存离开,若文件已经被更改过,则保存后离开

    新建文件和改名

    :w fileName 将编辑的数据保存成另一个文件(类似另存)并命名为fileName
    :f newFileName修改当前文件名称为newFileName
    :new 文件名.后缀新建文件,新建后,记得使用:w保存,否则直接关闭不会产生文件

    文件之间切换

    Ctrl+ww
    也可以用:ls查看已经打开的文件列表和编号
    然后使用:e 编号切换到需要编辑的文件

    文件操作

    :E 查看目录
    然后按j,k上下移动,按Enter进入到目录中
    到上级目录
    D 删除文件
    R 改文件名
    s 对文件排序
    x 执行文件
    :cd 目录路径 修改当前操作目录
    :pwd 查看当前路径位置

    显示文件目录

    :He在下边分屏浏览目录
    :He!在上边

    :Ve在左边分屏浏览目录
    :Ve!在右边

    Ctrl+w+c关闭当前窗口(关闭分屏)
    Ctrl+w+q关闭当前窗口,若这是最后一个窗口则退出Vim

    大小写转换

    vim中大小写转化的命令主要是围绕着“gu”和“gU”两个命令展开的。
    语法格式为:[开始位置] gu/Gu [结束位置]
    其中:
    gu 把选定范围全部小写
    gU 把选定范围全部大写

    1、整篇文章大小写转换

    ggguG 整篇文章转换为小写( 或 1GguG
    gggUG 整篇文章转换为大写(或 1GgUG

    解释一下:ggguG分作三段gg gu G
    gg=文件头
    gu=把选定范围全部小写
    gU=把选定范围全部大写
    G=文件尾
    1G=文件第一行(nG为文件第n行)

    2、转换几行的大小写

    g~~ 切换光标所在行字母的大小写

    gUU 光标所在的行全部变成大写
    guU 光标所在的行全部变成小写

    ngUU 从光标所在行往下n行都变成大写
    nguU 从光标所在行往下n行都变成小写

    ngUG 从第n行到光标所在的行都变为大写
    nguG 从第n行到光标所在的行都变为小写

    gU0 从光标所在位置到行首都变为大写
    gU$从光标所在位置到行尾都变为大写
    (若要变成小写将其中的gU改为gu即可)
    gUG从光标所在位置到文章最后一个字符,都变为大写
    gU1G从光标所在位置到文章第一个字符,都变为大写

    3、只转化某几个单词的大小写

    ~ 切换光标所在的字母大小写

    n~ 将光标位置开始的n个字母改变大小写(此处n为一个数字)

    gUwgUw 将光标所在单词的后面几个字母改成大写
    guwgue 将光标下的单词的后面几个字母改成小写
    例如:Example hello world
    当光标在字母“a”位置时,转换的是“ample”这个几个字母

    若转换光标后面5个单词的大小写,命令如下:
    转为小写:gu5w 或 gu5e
    转为大写:gU5w 或 gU5e

    查看编码

    ga查看光标处字符的ascii码
    g8查看光标处字符的utf-8编码

    Vim的分屏功能

    多行编辑

    可以考虑用列编辑模式.
    Ctrl-v 进入列编辑模式 (win下Gvim使用Ctrl-Q)
    (j or k 选择要编辑的范围)
    I or A 进入编辑模式,输入要编辑的内容
    ESC 结束

  • 相关阅读:
    如何挑选牙膏--2019/10/20
    怎样选卫生纸-2019/10/20
    页面动态加入<script>标签并执行代码
    ss 各种浏览器兼容前缀写法
    nth-child(n)、first-child、last-child用法
    改变checkbox的默认样式
    border和outline的区别
    标签嵌套规则和注意事项
    物理尺寸 转换为 像素
    打印iframe内容
  • 原文地址:https://www.cnblogs.com/id88/p/14524934.html
Copyright © 2011-2022 走看看