• vim学习3-《Vim实用技巧》


    注:<C-o>代表 按着Ctrl+o

     

    其他

    删除

    J  - join line 。删除空白行 

    xp 调换两个字符的位置

     

    查找并跳转

     

    查找光标所在的单词,“*”  next identifier  , ";" 下一个。 ","上一个

     

    复制

     

    y$  复制到光标所在位置到该行最后一个字符。

    "+y  复制中内容到+寄存器,也就是系统的剪贴板,供其他程序用 

    来自 <https://www.cnblogs.com/webStyle/p/4354464.html>

     

    剪切

    移动将到 xx 行

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

    6,9 co 12
    复制第6行到第9行之间的内容到第12行后面。

    移动当前行向上或向下

    nnoremap <C-S-Up> ddP 

    nnoremap <C-S-Down> ddp

     

    移动光标:

      Ctrl + O 移动光标到前一次位置

      Ctrl + I 移动光标到后一次位置

    来自 <https://blog.csdn.net/u011046042/article/details/49884215>

    H M L 分别让光标跳到当前页 首 中 尾 行。

     

    方便的组合:

    f+)+a,就可以在括号后面插入; v+i+(,选中所有括号里面的内容

     

    来自 <https://www.cnblogs.com/litifeng/p/5651283.html>

     

    滚屏 

    1. ”CTRL+U”显示文本的窗口向上滚动了半屏。
    2. “CTRL+D”命令将窗口向下移动半屏。
    3. “CTRL+E”向上滚动一行。
    4. “CTRL+Y”向下滚动一行。
    5. “CTRL+F”向前滚动一整屏。
    6. “CTRL+B”向后滚动一整屏。
    7. “zz”命令会把当前行置为屏幕正中央。
    8. “zt”命令会把当前行置于屏幕顶端。
    9. “zb”则把当前行置于屏幕底端.。

      j.    “ze” 屏幕移动到最左边

      k.  “zs”屏幕移动到最右边

     

    来自 <https://blog.csdn.net/qq_36084640/article/details/79312354>

     

    标记与跳转

    '{mark}

    跳转标志处

    标志所在的行

    `{mark}

    跳转标志处

    标志所在的行、列位置

    m{a_zA_Z}

    设置位置标志

    大写字母时为全局标志,可在文件间跳转

    marks

    列出标识位置

     

     

    来自 <https://blog.csdn.net/xidwong/article/details/75581370>

     eg.    mA        'A

     idea 非vim模式也可以 Ctrl+F11 1,  Ctrl+1

    vim自动创建的位置标志

    Col1

    Col2

    Col3

    `

    当前文件中上次跳转动作之前的位置

     

    .

    上次修改的位置

     

    缩进

    >> 相当于TAB 可以增加缩进 << 减少缩进

    >G 可以增加 从当前行到末尾行的缩进

     

    删除:

          C  等效  c$

       s  等效  cl

       S  等效  ^C

     

    重复

    命令

    重复

    回退

    /pattern<CR>

    ?pattern<CR>

    n

    N

    查找

    f/t/F/T

    ;

    ,

    执行替换

    :s/target/replace

    &

    u

     

     

    技巧81 高亮匹配

    hlsearch  , 禁用:set nohlsearch 或者 :se hls!   , :se nohls

     

     

    技巧1 认识“.”

    微小的宏,重复上次修改,可以是修改的单位可以是字符、整行、文件。

     用于格式化 eg.    >G  j.  j.      一个.代替  >G

                           eg       A;<Esc>  j.   j.  j.         一个.代替A;<Esc>

    将+替换成“ + ”,       f+    s + <Esc>   ;  .   ;.      一个.代替了 s + <Esc>

    用i <右键> <Esc>可以代替s + <Esc>

    ("+abc+","+cde+")          >>>      (" + abc + "," + cde + ")

     

    #* 查找相同的字符

    可以配合n.替换

     

    eg. 查找Int 替换成 float

    移动到int的i上,*到下一个int然后#回来 ,  cwfloat<ESC>      n.

     

    和 :%s/int/float/g 类似

    <C-a>   <C-x> 对数字加 减  可以是10<C-a>

     

    技巧11 多用重复,少用数字,方便u撤销

     

    技巧13 在插入模式中即时更正错误

    插入模式使用ctrl+h 删除前一字符,ctrl+w删除前一单词,ctrl+u删除至行首

     

    技巧14 返回普通模式

    <ESC>  或者 <C-[>

     <C-o>  切换到【插入-普通模式】 , 可以执行一次普通模式的命令,执行完后回到插入模式中。

     

    技巧15 不离开插入模式,粘贴寄存器中文本<C-r>{rigister}

    插入模式中使用 <C-r>0

    使用<C-r><C-p>{register} 会原义插入,并减少不必要的缩进

    Vim 寄存器完全手册

    1. 匿名寄存器

    使用 dcsx 等会删除字符的命令时,被删除字符会进入匿名寄存器 ""。 你可以认为 "" 寄存器是一个指针,指向刚才被存到的寄存器。

    使用 y 命令未指定寄存器会存到 "0 寄存器中,同时 "" 会与该寄存器保有同样的值。 这意味着你使用 p 和 "p 总会得到同样的结果。

    2. 编号寄存器

    编号寄存器从 "0 到 "9 共 10 个,其中 "0 保存着拷贝来的字符串"1 到 "9 保存着删除掉的字符串。 删除操作符包括 scdx。 删除掉的字符串会被存到 "1 中,上次删除的则会被存到 "2 中。以此类推,Vim 会保存你最近的 9 次删除。

    • 只有整行整行的删除,和通过段落级别的移动指令(包括 %,(,),/,`,?,n,N,{,}) 的删除才会被放到 "1 中。
    • 当用户指定拷贝操作的寄存器时(如 "ap),"0 不会被写入;但删除操作一定会被写入到 "1 中。

    "0 寄存器很有用,比如我们 copy 了一段文本然后用它替换另一段文本。 这时默认寄存器 "" 中的值就变成了被替换文本,如果还需要用 copy 的文本继续替换的话就需要 "0p 了。

     

    技巧16 随时随地做运算

    插入模式下

    <C-r>=6*35<CR>

     

    <C-v>{数字}   等于对应的字符如: <C-v>65  等于A

     

    技巧21 选择高亮选区

    gv 重选上次高亮选区

     

    o切换到高亮选区的另一端 

           可以对选区进行 >  后 . . . . 来重复缩进

    vit 选择标签内的内容。 。innerHtml    。 it 表示inside tag

    vat , at表示 arount tag
    vab  /  vib  , select a () block.

    vaB / viB  , select a {} block;

     

    所以对标签内的内容大写:  gUit   。下一行重复:    j.

     

    快速替换一行为-   Vr-

     

     

     

     

    技巧27 命令行模式

    这里[x]指 从/到 寄存器x中

    :[range]delete [x]

    :[range]yank [x]

    :[line]put [x]

    :[range]subsititute/{pattern}/{string}/[flags]

     

    :数字 等于 数字G

     

    :数字 操作  如:  :3y  复制第三行的内容 :3d 删除第三行内容, :3,5y 复制3到5行内

    .代表当前行,所以  当前行到末尾行为:    :.,$

    %s代表所有行, 如替换的时候 :%s/xx/cc/gc 

    %s等同于 :1,$

    0为虚拟行,位于文件正上方

     

    高亮区的时候按: , 会出现 :'<,'> 可以理解成选择高亮区

     

    目标行复制到当前行下方  :数字copy.   这里copy可以换成co或者t ,.代表当前行下方

     

    技巧30 在范围上执行普通模式命令

     Ex命令:

       先A;  行尾增加一个分号。

     然后 jVG,选中到最尾行。

    然后 :'<,'>normal . 让选中行都执行 行尾添加分号的操作。

    :%normal A;    符号%代表整个文件范围

     

    可以用@:来重复Ex命令

     

    技巧35 运行shell命令

    在编写a.py的同时,:w  然后 :!python a.py看效果

    :!{cmd}只能执行一条命令,:shell 可以启动一个shell会话 执行多条,exit退出。

    也可以<C-d>到将vim变到后台,然后exit退出

     

    把缓冲区内容作为标准输入或输出

    :read !{cmd}  ,如 :read !ls a*


    技巧39 将工作区分成窗口

        <C-w>s  水平切分
        <C-w>v 垂直切分

        切换窗口
        <C-w>w 窗口间循环切换
        <c-w>h 切换到左边窗口

        <c-w>j
        <c-w>k
        <c-w>l
        关闭窗口
        <C-w>c 关闭活动窗口
        <C-w>o 只保留活动窗口,关闭其他所有窗口
     切换标签页
        :tabedit {filename} 打开新的窗口页
        :tabc 关闭当前窗口页

        :tabo 只保留当前窗口页
        gt gT 分别是切换Tab
        {N}gt 切换到编号为{N}的标签页。默认从1开始。

  • 相关阅读:
    oracle递归层级查询 start with connect by prior
    C 常量指针和指针常量
    C 字符串常量和字符串变量定义和区别
    C 指针改变变量值
    UITableViewCell的高度与UILabel自适应
    手动开启ARC
    SWIFT模糊效果
    SWIFT中使用AFNetwroking访问网络数据
    MAC机中安装RUBY环境
    CocoaPods安装和使用教程
  • 原文地址:https://www.cnblogs.com/thewindkee/p/12873170.html
Copyright © 2020-2023  润新知