130+ essential vim commands
Basics
| :e filename | Open filename for edition |
| :w | Save file |
| :q | Exit Vim |
| :q! | Quit without saving |
| :x | Write file (if changes has been made) and exit |
| :sav filename | Saves file as filename |
| . | Repeats the last change made in normal mode |
| 5. | Repeats 5 times the last change made in normal mode |
Moving in the file
| k or Up Arrow | move the cursor up one line |
| j or Down Arrow | move the cursor down one line |
| e | move the cursor to the end of the word |
| b | move the cursor to the begining of the word |
| 0 | move the cursor to the begining of the line |
| G | move the cursor to the end of the line |
| gg | move the cursor to the begining of the file |
| L | move the cursor to the end of the file |
| :59 | move cursor to line 59. Replace 59 by the desired line number. |
| 20| | move cursor to column 20. |
| % | Move cursor to matching parenthesis |
| [[ | Jump to function start |
| [{ | Jump to block start |
Cut, copy & paste
| y | Copy the selected text to clipboard |
| p | Paste clipboard contents |
| dd | Cut current line |
| yy | Copy current line |
| y$ | Copy to end of line |
| D | Cut to end of line |
Search
| /word | Search word from top to bottom |
| ?word | Search word from bottom to top |
| * | Search the word under cursor |
| /cstring | Search STRING or string, case insensitive |
| /jo[ha]n | Search john or joan |
| /< the | Search the, theatre or then |
| /the> | Search the or breathe |
| /< the> | Search the |
| /< ¦.> | Search all words of 4 letters |
| // | Search fred but not alfred or frederick |
| /fred|joe | Search fred or joe |
| /<dddd> | Search exactly 4 digits |
| /^n{3} | Find 3 empty lines |
| :bufdo /searchstr/ | Search in all open files |
| bufdo %s/something/somethingelse/g | Search something in all the open buffers and replace it with somethingelse |
Replace
| :%s/old/new/g | Replace all occurences of old by new in file |
| :%s/onward/forward/gi | Replace onward by forward, case unsensitive |
| :%s/old/new/gc | Replace all occurences with confirmation |
| :2,35s/old/new/g | Replace all occurences between lines 2 and 35 |
| :5,$s/old/new/g | Replace all occurences from line 5 to EOF |
| :%s/^/hello/g | Replace the begining of each line by hello |
| :%s/$/Harry/g | Replace the end of each line by Harry |
| :%s/onward/forward/gi | Replace onward by forward, case unsensitive |
| :%s/ *$//g | Delete all white spaces |
| :g/string/d | Delete all lines containing string |
| :v/string/d | Delete all lines containing which didn’t contain string |
| :s/Bill/Steve/ | Replace the first occurence of Bill by Steve in current line |
| :s/Bill/Steve/g | Replace Bill by Steve in current line |
| :%s/Bill/Steve/g | Replace Bill by Steve in all the file |
| :%s/^M//g | Delete DOS carriage returns (^M) |
| :%s/r/r/g | Transform DOS carriage returns in returns |
| :%s#<[^>]+>##g | Delete HTML tags but keeps text |
| :%s/^(.*)n1$/1/ | Delete lines which appears twice |
| Ctrl+a | Increment number under the cursor |
| Ctrl+x | Decrement number under cursor |
| ggVGg? | Change text to Rot13 |
Case
| Vu | Lowercase line |
| VU | Uppercase line |
| g~~ | Invert case |
| vEU | Switch word to uppercase |
| vE~ | Modify word case |
| ggguG | Set all text to lowercase |
| gggUG | Set all text to uppercase |
| :set ignorecase | Ignore case in searches |
| :set smartcase | Ignore case in searches excepted if an uppercase letter is used |
| :%s/<./u&/g | Sets first letter of each word to uppercase |
| :%s/<./l&/g | Sets first letter of each word to lowercase |
| :%s/.*/u& | Sets first letter of each line to uppercase |
| :%s/.*/l& | Sets first letter of each line to lowercase |
Read/Write files
| :1,10 w outfile | Saves lines 1 to 10 in outfile |
| :1,10 w >> outfile | Appends lines 1 to 10 to outfile |
| :r infile | Insert the content of infile |
| :23r infile | Insert the content of infile under line 23 |
File explorer
| :e . | Open integrated file explorer |
| :Sex | Split window and open integrated file explorer |
| :Sex! | Same as :Sex but split window vertically |
| :browse e | Graphical file explorer |
| :ls | List buffers |
| :cd .. | Move to parent directory |
| :args | List files |
| :args *.php | Open file list |
| :grep expression *.php | Returns a list of .php files contening expression |
| gf | Open file name under cursor |
Interact with Unix
| :!pwd | Execute the pwd unix command, then returns to Vi |
| !!pwd | Execute the pwd unix command and insert output in file |
| :sh | Temporary returns to Unix |
| $exit | Retourns to Vi |
Alignment
| :%!fmt | Align all lines |
| !}fmt | Align all lines at the current position |
| 5!!fmt | Align the next 5 lines |
Tabs/Windows
| :tabnew | Creates a new tab |
| gt | Show next tab |
| :tabfirst | Show first tab |
| :tablast | Show last tab |
| :tabm n(position) | Rearrange tabs |
| :tabdo %s/foo/bar/g | Execute a command in all tabs |
| :tab ball | Puts all open files in tabs |
| :new abc.txt | Edit abc.txt in new window |
Window spliting
| :e filename | Edit filename in current window |
| :split filename | Split the window and open filename |
| ctrl-w up arrow | Puts cursor in top window |
| ctrl-w ctrl-w | Puts cursor in next window |
| ctrl-w_ | Maximize current window vertically |
| ctrl-w| | Maximize current window horizontally |
| ctrl-w= | Gives the same size to all windows |
| 10 ctrl-w+ | Add 10 lines to current window |
| :vsplit file | Split window vertically |
| :sview file | Same as :split in readonly mode |
| :hide | Close current window |
| :nly | Close all windows, excepted current |
| :b 2 | Open #2 in this window |
Auto-completion
| Ctrl+n Ctrl+p (in insert mode) | Complete word |
| Ctrl+x Ctrl+l | Complete line |
| :set dictionary=dict | Define dict as a dictionnary |
| Ctrl+x Ctrl+k | Complete with dictionnary |
Marks
| m {a-z} | Marks current position as {a-z} |
| ' {a-z} | Move to position {a-z} |
| '' | Move to previous position |
Abbreviations
| :ab mail mail@provider.org | Define mail as abbreviation of mail@provider.org |
Text indent
| :set autoindent | Turn on auto-indent |
| :set smartindent | Turn on intelligent auto-indent |
| :set shiftwidth=4 | Defines 4 spaces as indent size |
| ctrl-t, ctrl-d | Indent/un-indent in insert mode |
| >> | Indent |
| << | Un-indent |
| =% | Indent the code between parenthesis |
| 1GVG= | Indent the whole file |
Syntax highlighting
| :syntax on | Turn on syntax highlighting |
| :syntax off | Turn off syntax highlighting |
| :set syntax=perl | Force syntax highlighting |
via http://www.catswhocode.com/blog/130-essential-vim-commands
130+ essential vim commands的更多相关文章
- VIM Commands
Vim Commands Commands in NORMAL modes Motions small granular: move by direction k h l j mid granular ...
- [转]常用的130个vim命令
原帖地址:http://www.oschina.net/news/43167/130-essential-vim-commands 从 1970 年开始,vi 和 vim 就成为了程序员最喜爱的文本编 ...
- Rare But Powerful Vim Commands.
@1: We all know about :wq, but we usually ignore :x. :x和:wq都是保存当前文件并退出. 这两个命令实际上并不完全等价,当文件被修改时两个命令时相 ...
- 你需要的130个vim命令
参考文章:http://www.oschina.net/news/43167/130-essential-vim-commands,其中有些我以为需要补充的及时补充或修改 从 1970 年开始,vi ...
- 常用的130个vim命令
最近VIM用的也越来越多了...因为确实在慢慢的把win下的编辑习惯转成unix下的编辑习惯..._vimrc也在不断的完善中先贴一下平时在VIM中使用中的命令...有很多也是我没有掌握的 (估计也是 ...
- 跟我一起学习VIM
跟我一起学习VIM - The Life Changing Editor 前两天同事让我在小组内部分享一下VIM,于是我花了一点时间写了个简短的教程.虽然准备有限,但分享过程中大家大多带着一种惊叹 ...
- 跟我一起学习VIM - The Life Changing Editor
前两天同事让我在小组内部分享一下VIM,于是我花了一点时间写了个简短的教程.虽然准备有限,但分享过程中大家大多带着一种惊叹的表情,原来编辑器可以这样强大,这算是对我多年来使用VIM的最大鼓舞吧.所以分 ...
- Vim插件之Command-T使用问题
最近在使用vim插件CommandT时出现问题其实就是vim没有支持ruby,不过google之后找到了解决方法,老外的态度还是很让人敬佩的,度娘搜索的结果太让人呕心了.. 贴下,以后再次遇到解决. ...
- 【转载】跟我一起学习VIM - vim插件
目录 写在前面:Life Changing Editor 什么是VIM 为什么选VIM 为什么选其它 为什么犹豫选择它们 VIM >= SUM(现代编辑器) 如何学习VIM 一秒钟变记事本 VI ...
随机推荐
- [转] linux中cat more less head tail 命令
1.cat 显示文件连接文件内容的工具: cat 是一个文本文件查看和连接工具.查看一个文件的内容,用cat比较简单,就是cat 后面直接接文件名. 比如: [root@localhost ~]# c ...
- Shell 脚本模拟 milter 实现黑白名单及关键词过滤
程序执行流程:1. 开始接受邮件.2. 检查发件人是否在黑名单内,如果是拒绝接受;否则继续3. 检查发件人是否在白名单内,如果是接收邮件;否则继续4. 对邮件进行关键字过滤,如果邮件中包含被过滤的关键 ...
- 关于 rem 作为单位设置大小
rem是相对长度单位.相对于根元素(即html元素)font-size计算值的倍数htm{font-size: 62.5%;}根元素(html)先设置一个font-size,一般情况下为了容易计算re ...
- (转)Div左右两侧等高
一. 利用背景图,做出左右等高的模拟效果 这种方法不是真正的左右等高,而是在外框元素中添加一张背景图片,当内容增多时,背景会纵向重复,就会形成左右等高的效果. 这种方法不是真正的div自动等高,而 ...
- GIT学习(一)-->Git产生的历史原因
首先要说:Git是目前世界上最先进的分布式版本控制系统(没有之一). git的作者:Linus,林纳斯(下图就是,先膜拜一下,因为成就可不止这一点) 他是为何要写git的呢?话说 Linus虽然创建了 ...
- Mac OS X 10.9 Mavericks 修改root密码
Mac10.9忘记密码后有两种方式可以进去: 代码如下 复制代码 1.sudo passwd 重新输入密码即可,此方法修改了root的密码 代码如下 复制代码 2.sudo bash 输入当前用户 ...
- 【转】UITextView 修改键盘 的return按钮
原文:http://www.apkbus.com/blog-107838-45740.html 1 #import <UIKit/UIKit.h>2 3 @interface TextVi ...
- 你好,C++(12)如何管理多个类型相同性质相同的数据?3.6 数组
3.6 数组 学过前面的基本数据类型之后,我们现在可以定义单个变量来表示单个的数据.例如,我们可以用int类型定义变量来表示公交车的216路:可以用float类型定义变量来表示西红柿3.5元一斤.但 ...
- C# 判断字符串是否可以转化为数字
C# 判断字符串是否可以转化为数字 /// <SUMMARY> /// 判断字符串是否可以转化为数字 /// </SUMMARY> /// <PARAM name=&qu ...
- php 4.X与5.x版本构造函数区别与类的继承
今天看ecshop源码的时候发现 构造函数是和类名一样,以前没接触过,一下子疑惑啦 HP4.x 版本: PHP 4.x 的构造函数名与类名相同. 注意:在子类里父类的构造函数不会自动执行 ...