常用Vim指令介绍

打开文件跳至第5行

vim +5 file

打开并恢复上一次未正常退出的文件

vim -r file

显示文档名称,是否修改以及光标位置

ctrl+g
:f

将n1,n2行保存到新文件。

:n1,n2w filename

保存并退出

:x
ZZ
:wq

水平拆分窗口并浏览文件系统

:Sex

垂直拆分窗口并浏览文件系统。

:Vex

向前移动一个单词,光标停在下一个单词的开头

w

向后移动一个单词,光标停在下一个单词的开头

b

向前移动一节

{

向后移动一节

}

将光标移动到同一行的下一个c字符

fc

将光标移动到同一行上的前一个c字符。

Fc

跳转同行的下一个c字符,使用;查找下一个

fc
;

跳转同行的下一个c字符,使用;查找上一个

fc
,

移至该行的第一个非空白字符

^

移至行尾

$

移至文件头

gg

移动到文件末尾

G

向下滚动一个屏幕

Ctrl+f

向上滚动一个屏幕

Ctrl+b

将当前行移动到屏幕中心

zz

复制整行文本

yy

删除(剪切)1(n)行。

dd

在光标之后粘贴

p

跳至单词的下一个出现的地方

n

跳至单词的上一个出现的地方

N

将所有old出现的地方换成new

:%s/old/new/g

在垂直分割的多个窗口中编辑多个文件

vim -O filename filename2

在水平分割的多个窗口中编辑多个文件。

vim -o filename filename2

格式化代码

=

在光标处插入当前日期和时间

:r !date

其他Shell命令的输出可以插入到当前文档中。

:r !command

自动补全单词

Ctrl + n
Ctrl + p

改变光标处的大小写,也可以改变一个区域的大小写

~

跳转到局部定义的变量

gd

跳转到全局定义的变量

gD

跳转到上一个修改的地方

g;

跳转到下一个修改的地方

g,

跳到上一个功能块的开头,您需要使用单独的行{

[[

跳转到下一个功能块的开头需要一行{

]]

跳转到配对的{}, () or []的另一个括号位置

%

修改,剪切或复制括号里内容。

ci( 、 di( or yi(

修改,剪切或复制””里内容。

ci" 、 di" or yi"

Call the Shell and return vim with “exit”.
临时将vim打开的内容放到后台,去执行shell命令,回到vim,使用”exit”指令

!sh

光标处的数字+1

Ctrl + a

光标处的数字-1

Ctrl + x

打开光标所在单词的手册页

K

向下搜索光标处的单词

*

向上搜索光标处的单词

#

删除光标处的单词

daw

删除一个单词并开始插入

ciw

删除一行文本并进入插入模式

cc

执行j命令后,光标仅移动到屏幕上方的第5位,而不移动到屏幕的最后一行

:set so=5

删除光标字符并进入插入模式

s

删除光标位置周围的文本范围,然后进入插入模式

c

退出插入模式

Esc
Ctrl + [

跳转至屏幕中间

M

转换字符成为大写

gU

转换字符成为小写

gu

全选整个文件

ggvG

交换两个字符的位置

xp

交换两行的位置

ddp

将此语句添加到/ etc / vim / vimrc中以自动补全花括号。

imap {<CR> {}<ESC>i<CR><TAB><ESC>V<O<TAB> 

补全符号的另一半,将以下内容添加到/ etc / vim / vimrc中。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
inoremap ( ()<Esc>i
inoremap [ []<Esc>i
autocmd Syntax html,vim inoremap < <lt>><Esc>i| inoremap > <c-r>=ClosePair('>')<CR>
inoremap ) <c-r>=ClosePair(')')<CR>
inoremap ] <c-r>=ClosePair(']')<CR>
inoremap " <c-r>=QuoteDelim('"')<CR>
inoremap ' <c-r>=QuoteDelim("'")<CR>

function ClosePair(char)
if getline('.')[col('.') - 1] == a:char
return "\<Right>"
else
return a:char
endif
endf

function CloseBracket()
if match(getline(line('.') + 1), '\s*}') < 0
return "\<CR>}"
else
return "\<Esc>j0f}a"
endif
endf

function QuoteDelim(char)
let line = getline('.')
let col = col('.')
if line[col - 2] == "\\"
return a:char
elseif line[col - 1] == a:char
return "\<Right>"
else
return a:char.a:char."\<Esc>i"
endif
endf

转载请注明出处:http://www.wolfnx.com/2018/02/08/CommonVimInstruction

作者 : wolfnx
邮箱 : wolfnx@outlook.com
邮箱2 : lostnx@gmail.com

Click Me