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

原文地址:https://www.cnblogs.com/handt/p/2767777.html