程序员都应该知道的130个vim命令

 从1970年开始,vi和vim 就成为了程序员最喜爱的文本编辑器之一。5年前,我写了一个问自己名为“每个程序员都应该知道的100个vim 命令” 这次算是之前那篇文章的改进版,希望你会喜欢。
基础

:e filename Openfilenamefor 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 asfilename . Repeats the last change made in normal mode 5. Repeats 5 times the last change made in normal mode

在文件中移动

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 line59. Replace59by the desired line number. 20| move cursor to column20. % Move cursor to matching parenthesis [[ Jump to function start [{ Jump to block start

剪切、复制和粘贴

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

搜索

/word Searchwordfrom top to bottom ?word Searchwordfrom bottom to top * Search the word under cursor /cstring SearchSTRINGorstring, case insensitive /jo[ha]n Searchjohnorjoan /< the Search the, theatre orthen /the> Searchtheorbreathe /< the> Searchthe /< ¦.> Search all words of 4 letters // Searchfredbut notalfredorfrederick /fred|joe Searchfredorjoe /<dddd> Search exactly 4 digits /^{3} Find 3 empty lines :bufdo /searchstr/ Search in all open files bufdo %s/something/somethingelse/g Searchsomethingin all the open buffers and replace it withsomethingelse

替换

:%s/old/new/g Replace all occurences ofoldbynewin 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 byhello :%s/$/Harry/g Replace the end of each line byHarry :%s/onward/forward/gi Replaceonwardbyforward, case unsensitive :%s/ *$//g Delete all white spaces :g/string/d Delete all lines containingstring :v/string/d Delete all lines containing which didn’t containstring :s/Bill/Steve/ Replace the first occurence ofBillbyStevein current line :s/Bill/Steve/g ReplaceBillbyStevein current line :%s/Bill/Steve/g ReplaceBillbyStevein all the file :%s/^M//g Delete DOS carriage returns (^M) :%s///g Transform DOS carriage returns in returns :%s#<[^>]+>##g Delete HTML tags but keeps text :%s/^(.*)1$/1/ Delete lines which appears twice Ctrl+a Increment number under the cursor Ctrl+x Decrement number under cursor ggVGg? Change text to Rot13

大小写

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

读写文件

:1,10 w outfile Saves lines 1 to 10 inoutfile :1,10 w >> outfile Appends lines 1 to 10 tooutfile :r infile Insert the content ofinfile :23r infile Insert the content ofinfileunder line 23

文件浏览器

:e . Open integrated file explorer :Sex Split window and open integrated file explorer :Sex! Same as:Sexbut 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 conteningexpression gf Open file name under cursor

和 Unix 系统交互

:!pwd Execute thepwdunix command, then returns to Vi !!pwd Execute thepwdunix command and insert output in file :sh Temporary returns to Unix $exit Retourns to Vi

对齐

:%!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 Editabc.txtin new window

分屏显示

:e filename Editfilenamein current window :split filename Split the window and openfilename 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:splitin readonly mode :hide Close current window :­nly Close all windows, excepted current :b 2 Open #2 in this window

自动完成

Ctrl+n Ctrl+p (in insert mode) Complete word Ctrl+x Ctrl+l Complete line :set dictionary=dict Definedictas 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

缩写

:ab mail mail@provider.org Definemailas abbreviation ofmail@provider.org

文本缩进

: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 on Turn on syntax highlighting :syntax off Turn off syntax highlighting :set syntax=perl Force syntax highlighting

时间: 2024-12-22 14:14:36

程序员都应该知道的130个vim命令的相关文章

每个程序员都应该知道的8个Linux命令

摘要:Linux里有很丰富的各种命令,有些是很难用的.然而,学会了前面说的这8个命令,你已经能处理大量的log分析任务了,完全不需要用脚本语言写程序来处理它们. 每个程序员,在职业生涯的某个时刻,总会发现自己需要知道一些Linux方面的知识.我并不是说你应该成为一个Linux专家,我的意思是,当面对Linux命令行任务时,你应该能很熟练的完成.事实上,学会了下面8个命令,我基本上能完成任何需要完成的任务. 注意:下面的每个命令都有十分丰富的文档说明.这篇文章并不是来详尽的展示每个命令的各种功用的

优秀的程序员都应当知道的11个警句

1. 技术只是解决问题的选择,而不是解决问题的根本 我们可以因为掌握了最新的 JavaScript 框架 ahem.Angular 的 IoC 容器技术或者某些编程语言甚至操作系统而欢欣雀跃,但是这些东西并不是作为程序员的我们用来解决问题的根本--它们只是用于帮助我们解决问题的简单工具. 我们必须非常谨慎,不要对某项正好喜欢或者正好很火的特定技术走火入魔.否则,我们将进入这样的思维怪圈:把掌握的那项技术比做是锤子,在思考问题时,会自然的把所有的问题都想象成是锤子可以解决的钉子. 2. 聪明是代码

【第二届PHP全球开发者大会】MySQL中文网站创始人叶金荣:程序猿都该知道的MySQL秘籍

5月14-15日的第二届2016PHP全球开发者大会在北京国际会议中心举行.MySQL中文网站创始人.Oracle MySQL ACE叶金荣带来的分享是<程序猿都该知道的MySQL秘籍>,他主要介绍了MySQL的优化秘籍,并对InnoDB引擎做了深入的讲解:同时与大家分享了在MySQL的优化过程中所采的"坑":分享最后,向大家展示了5.7版本中重大变化. 演讲内容结构: MySQL优化秘籍 InnoDB的正确玩法 一些优化参考 硬件.系统.配置选项优化 MySQL参数优化

每个开发人员都应该知道的8个Linux命令

每个开发人员到了他们职业人生的某个阶段的时候,将会发现自己要寻找有关Linux的信息.我并不是这方面的专家.但是掌握了以下8个命令,我几乎可以得到我任何需要的东西. 注意:以下的命令都有很多扩展的文档,博客里提出的知识我最常用的命令,用法.如果你不了解Linux命令,这个帖子会给你一点指导. 我们以一些文本举例.假设我们有2个文件,里面有订单关于第三方的放置地点和发送回应. order.out.log 8:22:19 111, 1, Patterns of Enterprise Architec

程序员都应该学写“规范”的代码

在过去的7年半时间里,我带过的软件实习生超过一打,也看到过数以百计的学生和毕业生的档案.我发现很多事情他们都需要学习.或许你会说,我说的不 就是某种特定的技术.算法.数学,或者其他特定形式的知识吗?没错,这的确是需要学习的,但却并不是最重要的事情.他们需要学习的最重要的东西是"自我规 范".这些规范就是:尽可能地写出最简洁的代码:如果代码后期会因为改动而变得凌乱不堪就得重构:尽量删除没用的代码,并添加注释. 我花了很多时间来敦促这些实习生去学习这些内容.我经常会问他们,怎么样才能成为一

每个 Ubuntu 用户都应该知道的 Ubuntu 16.04 LTS 的十大新功能

每个 Ubuntu 用户都应该知道的 Ubuntu 16.04 LTS 的十大新功能 开发了六个月后,Canonical在2016年4月21日正式发布了新的Ubuntu 16.04 LTS.现在它可供下载,安装到PC.笔记本和上网本上. Ubuntu的这个版本是作为"长期支持"版(LTS)发布的,将在5年的时间内得到更新和安全补丁:在此期间,会发布多个单点版本(Ubuntu 16.04.1.Ubuntu 16.04.2和Ubuntu 16.04.3).它还随带数量众多的变化,以及几项新

所有程序员都应该遵守的 11 条规则

  所有程序员都应该遵守的11 条规则   ************************************************************************** 英文原文:11 Rules All Programmers Should Live By 参与翻译(5人):北风其凉, pseudo, nzchris, 霍啸林, 无若 转载出处:http://www.oschina.net/translate/11-rules-all-programmers?from=

每一个程序员都应该知道的高并发处理技巧、创业公司如何解决高并发问题、互联网高并发问题解决思路、caoz大神多年经验总结分享

原文:每一个程序员都应该知道的高并发处理技巧.创业公司如何解决高并发问题.互联网高并发问题解决思路.caoz大神多年经验总结分享 本文来源于caoz梦呓公众号高并发专辑,以图形化.松耦合的方式,对互联网高并发问题做了详细解读与分析,"技术在短期内被高估,而在长期中又被低估",而不同的场景和人员成本又导致了巨头的方案可能并不适合创业公司,那么如何保证高并发问题不成为创业路上的拦路虎,是每一个全栈工程师.资深系统工程师.有理想的程序员必备的技能,希望本文助您寻找属于自己的"成金之

程序员都不读书,但你应该读

问答网站stackoverflow.com的一个主要功能体现就是:软件开发人员无需再从书本上学习编程,就像Joel所说的: 程序员看起来都不再读书.市场上编程方面书籍的数量和编程从业人数相比来少的可怜. 2004年在<The Shlemiel Way of Software>一书中Joel也表达了相同的观点: 大部分的人都不读点什么或写点什么.大部分的程序员都不读软件开发方面的书籍,他们不去软件开发方面的网站,他们不去Slashdot参与讨论. 既然现在的程序员都不读书,他们如何学习编程?他们