Vim入门指北

========

一些基本概念:

  • operator(操作符): 例如命令d, y, c等;
  • motion(移动): 例如移动光标的命令h j k l, w, e, b等;
  • text-objects(文本对象): 例如s(表示句子sentence), w表示单词,p表示段落(Paragraphs)等等。
    除了hjkl这些基本命令之外, 你还要知道“更高级的”组合命令:
    "operator + motion"组合的方式,例如:
  • ct. 将字符'.'前面的所有都删除.
  • y^ 复制到行首.

"operator + text-objects"的命令组合方式, 例如:

  • ciw : 剪切光标处单词, 不包括空格
  • caw : 剪切光标处单词, 包括空格
  • dip : 删除一段

移动光标:

下上左右:JKHL
移动到上一个单词首b
移动到下一个单词首w,移动3个单词3w
<----b w---->

w/b是在单词首部移动,在单词尾部移动为ge/e
<----ge e---->

如果是大写的B,W,gE,E,则只将“空格”作为单词分隔符,例如'gloal.member'被当作一个完整的词。

^ 光标移动到行开头
$ 光标移动到行结尾

fx 光标移动到下一个x处,3fx移动到第三个x处
Fx 光标移动到前面的x处
txTx类似,移动到x之前

ma 标记当前行, 标签可以是a-z任意字符。
~a 跳转到a标签。

标签跳转C-]
跳转回C-OC-T或按两下
Ctrl + 左/右键 也可以跳转/返回
跳转到匹配的括号%
移动到文件首gg
有趣的命令9999k作用也是移动到文件首
移动到文件尾G
跳转到第33行33G
或者输入 :33 也可以跳转
如移动到文档1/3处 ,直接输入33%
zz 将当前光标所在的行移到屏幕中间 ,大写的ZZ是保存&退出文档。
zt 当前光标所在的行移到屏幕顶,助记t=top 。
zb 当前光标所在的行移到屏幕底,助记b=bottom 。
H, M, L分别为移动到文档的head, middle, last的位置。
C-F , C-B 向前向后翻页

Linux 终端( Terminal)中常用的快捷键
ctrl+f 向前移动一个字符
ctrl+b 向后移动一个字符
alt+f 向前移动一个单词
alt+b 向后移动一个单词
ctrl+a 移动到当前行首
ctrl+e 移动到当前行尾

编辑:

使用cdx删除的字符仍然存在寄存器中,用p可以粘贴出来。

  • c = 替换(change),删除文本并进入插入模式,
  • d =删除(delete),一般组合使用,
  • y =复制(yank),
  • p = 粘贴(paste),
  • x = 删除字符;

删除,剪切, 复制一行= ccddyy
删除,剪切, 复制多行= 3cc4dd5yy
删除,剪切, 复制到行尾= c$d$y$
或者大写C, D, Y, 也是到行尾
删除,剪切,复制到行开头= c^d^y^ 或者c0d0y0

从光标开始, 删除,剪切,复制到单词尾=cwdwyw
删除,剪切,复制整个单词= daw, caw, yaw
注意区别ywyaw, 例如光标在"test" 的e位置, yaw复制整个单词, yw只复制est。

tips: 重复操作的快捷键是".", 比如daw删除一个单词后想继续删除下一个单词,就可以按"."

删除换行符(两行合并为一行): J
撤销上次操作(还原): u
反撤销(重做): C-R
撤销对一行的所有操作(还原一行): U,第二次按U会撤销上一次U的操作。
只用u和C-R即可回到任何一个操作状态。
可视模式下的U/u是大小写转换。

  • 光标前插入 = i
  • 光标后插入 = a
  • 行首插入 = I
  • 行尾插入 = A
    在当前行的下面另起一行,并进入插入状态o
    在当前行的前面另起一行,并进入插入状态O
    CTRL-T is working with tags stack
    CTRL-O is working with jumplist
    Tag stack and jumplist are different list in vim, but they might have same items when you jumping through tags (eg. using CTRL-] )

外部程序的粘贴/复制:

GVIM的“+号寄存器”可以与外部程序复制/粘贴:

  • 复制"+y
  • 粘贴"+p
  • 剪切"+x
    注: 以上快捷键在命令可视模式/模式有效,先按双引号进入寄存器模式,再按加号,然后按y/p/x
    如果在插入模式, 先按ctrl+R进入寄存器模式(会出现"号), 再按对应的寄存器编号,系统共享寄存器编号是+号.
    在VIM正常模式下,ctrl+r 是重做。
" 加入到_vimrc文件中:
map <C-c> "+y "加号寄存器-复制  
map <C-v> "+p "加号寄存器-复制  
map <C-x> "+x "加号寄存器-复制  
map <C-s> :w<cr> " 保存  

多窗口:

  • 关闭分屏窗口: Ctrl+W cCtrl+W q
  • 上下分割窗口: Ctrl+W s
  • 左右分割窗口: Ctrl+W v
    Ctrl+w Ctrl+]新窗口打开定义

多文件buff操作:

:E 或者:Explore 浏览目录
:edit filename 编辑文件;
:ls 列出所有buffer;
:b 2:buffer 2将切换到相关的buffer
:b2 关闭buff=2的文件;
:bn 删除文件缓冲(关闭文件)。
zz 将当前编辑的行置于屏幕中间。
ZZ 保存退出。
:q! 不保存退出, :qa!表示退出所有buff并不保存
:wq 保存退出

搜索和替换:

搜索

/include 正向搜索,n下一个,N上一个
?include 反向搜索
/\<the\> 全词匹配搜索单词"the",助记开头<,结尾>
#号是向后搜索匹配单词,*向前搜索匹配单词, gd类似*号的功能.

正则搜索:

/^the 搜索the开头的行(针对行,而非单词)
/here$ 搜索here结尾的行
点号匹配任何单字符,如果要搜索的内容本身包含点号,则用.代替,比如:
/the. 搜索"the"匹配的内容
/the\. 搜索"the."匹配的内容

替换:

最常用的替换命令就是:%s/1/2/g了, 其中%符号表示范围整个文件, s表示搜索, 最后的g表示全局替换.
如果要制定范围内替换, 比如在31~文件尾范围内替换: :31,$s/hello/world/gc, 最后的c参数表示替换过程中需要确认(confirm).

可视模式:

shift + v: 行选择模式
大写V同上
所选择区域转换为大写U,转换为小写u
xd在可视模式都是删除
><在可视模式为右移,左移

列模式:

Ctrl+v (Windows上是Ctrl+Q)进入列模式,
使用方向键或H J K L选择行, 用cd删除, shift+i插入(大写I键),
插入完成后, 按esc后生效.

代码折叠:

可以zf进行折叠, 用zo打开折叠,也可以方向键向右打开折叠,zc 关闭折叠.

Session

Session可以保存此次编辑的状态, 比如已经打开的文件, 当前编辑位置等.

  • 保存Session: mksession session.vim
  • 载入Session: source session.vim

[Evernote]https://www.evernote.com/shard/s120/sh/4e8424bf-6c54-4f2e-a9a5-d4641127c615/ed07f657e1eccd05e81947e2e008c8a9

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容

  • 目录(?)[-] 关于Vim 1 Vim的几种模式 启动Vim 文档操作 光标的移动 1 基本移动 2 翻屏 3 ...
    SunnyLeong阅读 8,627评论 0 32
  • 曾经在思科的工厂测试系统`KlemTest` (`SUSE`命令行模式)中使用`VI`/`VIM`超过2年半,现在...
    戈多在地狱阅读 1,783评论 1 13
  • 命令历史 以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令。 启动vim 在命令...
    im蚂蚁阅读 30,720评论 3 48
  • 1. Vim的几种模式 正常模式:可以使用快捷键命令,或按:输入命令行。 插入模式:可以输入文本,在正常模式下,按...
    红线路亚湾阅读 16,870评论 0 1
  • 每想你一次,天上飘落一粒沙, 从此形成了撒哈拉。 每想你一次,天上就掉下一滴水, 于是形成了太平洋。
    戴你飞阅读 152评论 0 0