写这篇文章是由于在更新个人一篇博客 Git的其余用法 的时候,里面的修改已经提交的commit说明
这一部分须要用到vim。html
在使用git config --global --edit
或者git rebase -i commiteId^
的时候,git会进入文本编辑模式。默认的编辑器是vim,你能够在Git安装的上层目录\Git\usr\bin
里找到vim.exe。git
这让我想起之前使用VI(Visual Interface)和VIM(VI IMproved)编辑器时的懵逼。如今干脆把vim的基本使用整理出来。github
vim编辑器有两种模式,分别为命令模式
和编辑模式
。正则表达式
当你刚进入文本编辑器的时候,处于编辑器的命令模式。这个命令模式能够作不少事情。这里介绍几个经常使用的:vim
命令 | 对应英文单词 | 说明 |
---|---|---|
i |
insert | 进入编辑模式,将光标定位在当前字符的前面 |
v |
visual mode | 按一下v至关于你平时在MS Word里面按住shift,用来选择(高亮)一段文本 |
y |
yank | 和复制的功能同样(英文意思为:猛拉) |
p |
paste | 粘贴到当前字符前面 |
x |
x就是"叉"(或者“干掉”)的意思 | 删除被高亮的字符(光标所在的字符也算是被高亮的字符) |
yy |
yank | 复制光标所在行 |
dd |
delete | 删除光标所在行 |
u |
undo | 撤销上一个修改 |
ctrl + r |
redo | 不当心撤销过多的时候使用 |
/想搜索的字符串 |
/ 以后无空格,按Enter键开始搜索。按n (即next)往下搜索,按N 往上搜索 |
|
:1,$ s /text1 /text2 /c |
substitute | 把text1 替换成text2 。1,$ 表示行数范围,其中 $ 表示文档末尾。当你把数字1 换成小数点. 时,表示从当前位置开始搜索(跟 bash 中用 . 表示当前位置同样)。/c 表示让你选择找到以后的动做:y (yes)表示替换当前所选;n (next)表示跳过当前所选;a (all)表示当前所选及剩下的所有替换,再也不确认;q (quit)表示中止替换。注意前面的冒号,与下面的命令相似。 |
:q! |
quit discard | 舍弃修改并退出 |
:wq |
write then quit | 保存修改并退出 |
看到:q!
这个命令,可能有点懵圈。你没看错,得先输入一个冒号:
,再去输入q!
。最开始的时候我不知道要输入冒号,结果半天退不出来。bash
重要的说明:
在i
的说明中,你可能不太理解为何说“将光标定位在当前字符的前面”。在vim编辑器的命令模式下,光标是覆盖在字符上的。当你按i
,它就将光标定位到当前字符的前面。与此相对的,按a
(即append)时,光标就定位到当前字符的后面。app
如图所示:编辑器
找了半天终于找到一个不错的在线vim编辑器:Vim.js
还有一款加载比较慢的:Interactive Vim tutorial - sandboxui
点进去后你能直观地看到光标是覆盖到字符上的。你能够分别按i
和a
来查看效果。google
至于其余命令,仍是看图比较直观:
固然,你也能够下载vim的文档。这里是官方文档:vimbook-OPL.pdf
当你按i
进入编辑模式的时候,基本上就能够照常编辑文本了。
除了正常的输入外,这些按键也能够正常使用:del
(往光标后删除),back
(也就是键盘上的←,往光标前删除),enter
(回车键),tab
(制表符)
可是注意,想要选择字符或者复制粘贴等的时候,必须退出编辑模式,到命令行模式去执行操做。
当你想要退出编辑模式的时候,按esc
键。注意,这时是退到命令模式,不是彻底退出。你得在命令模式输入命令来彻底退出编辑。
知道了以上这些介绍,你能够进行基本的编辑了。
在命令模式点击 /
后,会进入搜索模式。它会搜索 /
以后的 pattern 。
在搜索和替换的时候,若是不能用正则表达式,很可能耗费大量时间。Vim 是支持正则表达式的,不过 Vim 正则表达式的写法跟一般的写法有点不同。
好比你要匹配 dekkkl
和 detttl
,你能够这么写:
/de.\+l
这里的 /
是以前输入的,表示搜索功能。后面的 de.\+l
是正则表达式。这里与普通的正则表达式不一样的地方在于用 \+
来表示匹配一次或屡次,而不是 +
。
详细的规则能够看:VIM 正则参考
除了搜索以外,替换也能使用正则表达式。替换的语法和上面表格中的一致, text1
这个部分能够是正则表达式。