超过 130 个你需要了解的 vim 命令

简介:

来自于:http://bbs.51osos.com/thread-12855-1-2.html

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

基础

: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

在文件中移动

k or Up Arrow 
move the cursor up one line

j or Down Arrow 
move the cursor down one line


move the cursor to the end of the word


move the cursor to the begining of the word


move the cursor to the begining of the line


move the cursor to the end of the line

gg 
move the cursor to the begining of the file


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

剪切、复制和粘贴


Copy the selected text to clipboard


Paste clipboard contents

dd 
Cut current line

yy 
Copy current line

y$ 
Copy to end of line


Cut to end of line

搜索

/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

/\<\d\d\d\d\> 
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 withsomethingelse

替换

:%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/^\(.*\)\n\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 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

文件浏览器

: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

和 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

对齐

:%!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

分屏显示

: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

自动完成

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

缩写

:ab mail mail@provider.org 
Define mail as abbreviation of mail@provider.org

文本缩进

:set autoindent 
Turn on auto-indent

:set smartindent 
Turn on intelligent auto-indent

:set shift 
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

via catswhocode

本文转自孤舟夜航之家博客51CTO博客,原文链接http://blog.51cto.com/cysky/1410742如需转载请自行联系原作者


cysky

相关文章
|
6月前
|
机器学习/深度学习 开发工具
Vim的常用命令 基本使用
Vim的常用命令 基本使用
49 0
|
6月前
|
Linux 编译器 开发工具
Linux:详解(yum的使用、vim编辑器命令集合以及gcc/g++编译器的使用)
Linux:详解(yum的使用、vim编辑器命令集合以及gcc/g++编译器的使用)
191 1
|
6月前
|
NoSQL Linux 编译器
Linux:vim调试工具gdb | 常见命令集
Linux:vim调试工具gdb | 常见命令集
159 0
|
6月前
|
开发工具
Vim 模式切换 | 命令集
Vim 模式切换 | 命令集
120 0
|
3月前
|
Unix Linux 开发工具
在Linux中,有哪些基本的 Vim 命令?
在Linux中,有哪些基本的 Vim 命令?
|
1月前
|
Unix Linux 开发工具
Linux Vim的 命令大全
Linux Vim的 命令大全
23 0
|
2月前
|
存储 Linux Shell
常用vim命令和vim基本使用及Linux用户的管理,用户和组相关文件
这篇文章介绍了Vim编辑器的基本使用、常用命令和模式,以及Linux系统中用户和组的管理方法,包括用户和组相关文件如/etc/passwd、/etc/shadow和/etc/group的说明。
常用vim命令和vim基本使用及Linux用户的管理,用户和组相关文件
|
2月前
|
存储 Linux 编译器
linux中vim介绍以及常用命令大全
linux中vim介绍以及常用命令大全
84 8
|
3月前
|
开发工具
vim编辑器常用命令
vim编辑器常用命令
88 1
|
4月前
|
JSON Java Linux
linux 命令使用总结:vim,nohup,find,df,du,sudo,netstat,ll,curl,lastlog
linux 命令使用总结:vim,nohup,find,df,du,sudo,netstat,ll,curl,lastlog
70 5