vim实用技巧学习part_one

来源:互联网 发布:恶搞非诚勿扰灭灯软件 编辑:程序博客网 时间:2024/05/29 02:36

vim实用技巧学习 part one

入门使用命令

dw

​ 删除光标下的单词


/

​ /the 高亮显示查找的匹配项 the


vit

<a href=" ">text</a>  //当光标在a上面的时候 实用vit命令光标跳转到text上面去  高亮text并且光标在t上面

​ v进入可视模式

​ it文本对象选中<a>标签内的文本


使用vim的出场配置

​ 想知道vim是否是出厂配置,在启动vim的时候这样运行$vim -u NONE -N

​ -u NONE 让vim启动时不加载你的vimrc,你的定制就不会生效,插件也会被禁用。当vim不加载vimrc的时候,会进入 vi兼容模式,-N标识则会使能‘nocompatible’选项,防止进入vi兼容模式。


vim解决问题的方式

.命令的使用

.命令可以让我们重复上一次的修改(查看更多:h .)上一次的修改包括多个命令的操作

​ 使用x命令会删除光标下的字符,在这种情况下使用.命令可以重复删除光标下的字符

​ 使用u可以撤销上一次的修改(当时.命令不能重复u的撤销命令)

dd命令事删除整一行

>G 增加当前行到文档结尾处的缩进层级

j光标移至下一行

.命令是一个微型的宏(macro)


不要自我重复

​ 对于在结尾添加;分号这个常见的操作:

$光标移至结尾

a进入插入模式 类似i,Esc退回普通模式

A命令在当前行的结尾添加内容,不管光标在哪里,输入A就会进入插入模式,并将光标移至行尾,等于$a

其他复合命令:

复合命令 等效的长命令 C c s cl S ^c I ^i A $a o A O ko

​ 该复合命令都是从普通模式切换到插入模式


以退为进

​ 在一个字符的前后各添加空格:

  1. f字符

  2. s空格字符空格<Esc>

  3. ;

  4. . #即可将当前行另一个字符的前后各加空格

    解释:

    1. f字符将光标到最近查找字符的地方
    2. ;重复上一步的f F t T命令
    3. ,反向重复上一步的f F t T命令

执行、重复、回退

​ 当你重复操作的时候,按键过快,导致错误的时候,如何回退

​ 可重复的操作及如何回退

目的 操作 重复 回退 做一个修改 {edit} . 在行内查找下一个指定字符 f{char}/t{char} ; , 在行内查找上一指定字符 F{char}/T{char} ; , 在文档中查找下一处匹配项 /Pattern n N 在文档中查找上一处匹配项 ?Pattern n N 执行替换 :s/targert/replacement & u 执行一系列修改 qx{changes}q @x u

查找并手动替换

​ 将文中所有的一个content替换为copy

:%s /content/copy/g

​ 或者另一种方法:

  1. :/content #光标移到content上
  2. * #*命令查找所有的content,该命令有两个作用
    1. 光标移到下一个content上
    2. 所有出现的content高亮显示 如果没有高亮运行:set hls
  3. cwcopy<Esc> #cw 删除当前光标下的单词,自动进入插入模式
  4. n #跳转到下一个匹配项
  5. . #重复修改

结识.范式

​ 理想模式:一键移动(移动到下一个匹配项),另一键执行


vim模式

把撤销单元切成块

u命令进行撤销最新的修改,从进入插入模式开始,知道返回普通模式为止,在此间的输入或删除的任何内容都被当成一次修改,合理使用<Esc>,可以使撤销用于单词或者句子

​ 所有每次有停顿的时候,就要退出插入模式,当我要继续写的时候,按A命令即可在原来的地方继续写作

​ 当处于插入模式,光标位于行尾,另起一行的方式是回车,但是可以使用<Esc>o


在插入模式中移动光标会重置修改状态

​ 如果在插入模式使用了<up><down><left><Right>就会产生新的撤销块

​ 这个类似切换为普通模式然后使用h、j、k或l(左上下右)命令对光标进行移动,唯一区别是我们并没有退出插入模式。这个也对.命令有影响


构造可重复的修改

​ the end is nig**h** 我的光标在h上面,我要删除nigh这个单词,以下有三种方法


反向删除

  • db #删除从光标起始为到单词开头的内容,但是会原封不动留下最后一个字符‘h’
  • x #删除h字符

正向删除

  • b #将光标移到单词的开头
  • dw #删除整个单词

删除整个单词

  • daw #直接删除一个单词,aw文本对象,而不是动作命令(delete a word)

比较

dbxbdwdaw

​ 反向删除方案包含两步操作:db 命令删除至单词的开头,而后x 命令删除一个字符。如果我们跟着执行一次. 命令,它会重复删除一个字符( . = = x )。

​ 正向删除方案也包含两步。这一次,b 只是一次普通的移动,而dw 完成修改。此时用. 命令会重复dw,删除从光标位置下个单词开头的内容。不过因为我们刚好已经在行尾了,并没有“下一个单词”,所以在这个场景里. 命令没什么用。不过,至少它代表了一个更长点的操作(. = = dw)。

daw操作不仅仅删除了该单词,它还会删除一个空格,因此光标最终会停在单词“is”的最后一个字符上。如果此时我们使用. 命令,它会重复上次删除单词的命令。这一次, . 命令会做真正有用的事情(. = = daw)。


用次数做简单的算术运算

​ 很多普通模式命令都可以带一个次数前缀,这样Vim 就会尝试把该命令执行指定的次数,而不是只执行一次(见:h count)。

<C-a><C-x> 命令分别对数字执行加和减操作。在不带次数执行时,它们会逐个加减,但如果带一个次数前缀,那么就可以用它们加减任意整数。例如,如果我们把光标移到字符5 上,执行10<C-a>就会把它变成15。

​ 当光标不在数字上,使用ctrl+a将会在当前行正向查找数字,并跳转到那里去

.blog, .news { background-image: url(/sprite.png); }.blog { background-position: 0px 0px }

​ 我们要复制最后一行并且对其做两个小改动,即用“news”替换单词“blog”,以及把“0px”改为“-180px”。我们可以运行yyp 来复制此行,然后用cw 来修改第一个单词。光标在第二行的第一个字符

  • yyp #复制当前一行
  • cW.news<Esc> #cW删除第一个单词直到空格结束,并且进入插入模式,输入.news
  • 180<ctrl+x> #自动调到第一个数字,并对其减180

    007使用<ctrl +a >其结果是010,因为vim 把0开头的数字为八进制的数字


vim实用技巧notes
吐槽以下csdn的markdown的theme简直是难看

0 0
原创粉丝点击