admin 管理员组

文章数量: 887021

格式:指令[或指令] 参数 // 指令解释

文件操作

vimvi】 // 打开一个空文件

vimvi】 a.txt // 打开当前目录中的a.txt文件;若文件不存在则创建一个名为a.txt的文件(指定保存位置为当前目录)

vimvi】 /home/a.txt // 打开home目录中的a.txt文件;若文件不存在则创建一个名为a.txt的文件(指定保存位置为/home)

vimvi】 + a.txt // 打开当前目录中的a.txt文件,并定位到文件末尾;若文件不存在则创建一个名为a.txt的文件(指定保存位置为当前目录)

vimvi】 +/Hello a.txt // 打开当前目录中的a.txt文件,并将光标置于第一个与Hello匹配的串处

vimvi】 +25 /home/a.txt  // 打开e盘目录中的a.txt文件,并定位到文件的25行首

vimvi】 + /home/a.txt // 打开e盘目录中的a.txt文件,并定位到文件末尾;若文件不存在则创建一个名为a.txt的文件(指定保存位置为/home/

vimvi】 a.txt b.txt c.txt // 打开当前目录中的a.txt,b.txt,c.txt文件;若文件不存在则创建一个名为a.txt,b.txt,c.txt的文件(指定保存位置为当前目录) 

:w // 保存文件

:w! // 强制保存文件(文件为只读类型也会被保存)

:w /home/a.txt // 保存到/home/a.txt

:w! /home/a.txt // 强制保存到/home/a.txt

:x:wq】 // 保存并退出

:x:wq】 /home/a.txt   // 保存到/home/a.txt,并退出

:q // 退出(如果未保存,则会退出失败)

:q! // 不保存,强制退出

:open  /home/b.txt // 在新缓冲区中打开/home/b.txt文件

:e /home/test.txt // 在新缓冲区中打开/home/test.txt文件

:set fileformat? // 查看当前格式 - unix/dos

:set fileformat=unix // 将当前文件设置成unix格式

:set termencoding=gbk // 将文件内容使用gbk编码显示到SecureCRT等终端上

光标移动

h  j  k  l // 左 下 上 右

ctrl + e // 向下滚动一行

ctrl + y // 向上滚动一行

ctrl + d // 向下滚动半屏

ctrl + u // 向上滚动半

ctrl + f // 下一页

ctrl + b // 上一页

ctrl + g // 移动到文件末尾

% // 括号匹配 - 小括号/中括号/大括号

// 跳到下一个单词的起始处(使用非字母、数字及下划线的字符作为分隔符号)

W // 跳到下一个单词的起始处(仅使用空格、Tab、回车作为分隔符号)

// 跳到上一个单词的起始处(使用非字母、数字及下划线的字符作为分隔符号)

// 跳到上一个单词的起始处(仅使用空格、Tab、回车作为分隔符号)

e // 跳到当前单词的末尾(使用非字母、数字及下划线的字符作为分隔符号)

E // 跳到当前单词的末尾(仅使用空格、Tab、回车作为分隔符号)

0 // 跳到当前行行首

^ // 跳到当前行最前字符的位置

$ // 跳到当前行行末

gg // 跳到第一行最前字符的位置

gd // 跳转当前光标处变量或函数的定义处

G // 跳到当前文件最后一行的最前字符的位置

5G:5】 // 跳转到第5行最前字符的位置

fx // 在当前行中向后查找字符x

Fx //在当前行中向前查找字符x 

; // 重复上一次的f或F命令

, // 执行f或F命令时,向前查找字符x

* // 向后查找当前光标下的单词

# // 向前查找当前光标下的单词

·. // Tab上面的字符+句号   回到上一次编辑所在的行首

H // 到当前屏幕的最上一行

M // 到当前屏幕的中间一行

L // 到当前屏幕的最下一行

插入模式

i // 从当前光标位置插入

// 从当前行起始处插入

a // 在光标之后插入

A // 在当前行末插入

// 在当前行下一行插入一个新行

O // 在当前行上一行插入一个新行

ctrl + n // 下一个提示匹配

ctrl + p // 上一个提示匹配

esc // 退出编辑模式

文本选择

v // 启动可视模式,移动光标选中字符

V // 启动行可视模式,移动光标选中行

ctrl + v // 启动块可视模式

o // 移动到选择块的另外一端

U // 将当前选择块转成大写

O // 移动到选择块的另外一对角上

aw // 选中一个单词

ab // 选中一个匹配块(如:小括号/中括号/大括号等)

aB // 选中一个括号匹配块

ib // 选中小括号中的内容

iB // 选中大括号中的内容

> // 右移

// 左移

y // 复制

// 删除

~ // 将当前选择块内容大小写切换

编辑

cc // 删除当前行内容(并切换到插入模式)

cw // 删除当前光标到所在单词末间的内容(并切换到插入模式)

caw // 删除当前单词(并切换到插入模式)

c$ // 删除当前光标到行末的内容(并切换到插入模式)

s // 删除当前光标字符(并切换到插入模式)

S // 删除当前行内容(并切换到插入模式)

// 将下一行挪到当前行结尾

// 替换光标所在处一个字符

rx // 将当前光标处字符替换为字符x

// 相当于按了insert键,直到按ESC键退出

u // 撤销

ctrl + r // 重做

. // 重复上次命令

// 当前光标下字符的大小写转换

g~iw // 当前光标下单词的大小写转换

gUiw // 转换当前光标下单词为大写

guiw // 转换当前光标下单词为小写

<< // 左缩进

>> // 右缩进

== // 自动缩进对齐

剪切、复制和粘贴

dd // 剪切当前行

ndd // 剪切从当前行起的n行内容

dw // 剪切到下一个单词开头

de // 剪切当前光标到本单词末尾

dE // 剪切当前光标到本单词末尾包括标点在内

db // 剪切当前光标到前一个单词

dB // 剪切当前光标到前一个单词包括标点在内

daw // 剪切当前单词

x // 剪切当前字符

nx // 剪切当前的n个字符

X // 剪切当前光标的前一个字符

D // 剪切当前光标到行尾

dG // 剪切当前光标到文件末尾的所有内容

d0 // 剪切当前光标到本行行首的所有内容

d$ // 剪切当前光标到本行行尾的所有内容

d^ // 剪切当前光标到本行首间的内容

:1,100d // 剪切1~100行

:100d // 剪切第100行

:1,100 mo $ // 将1~100行的内容移动到最后一行

yy // 复制当前行

nyy // 复制从当前行起的n行内容

yaw // 复制当前光标下的单词

yw // 复制当前光标到所在单词末间的内容

y$ // 复制当前光标到行末间的内容

y^ // 复制当前光标到行首间的内容

yG // 复制当前光标到文件末尾间的内容

// 在当前光标后插入复制的内容

// 在当前光标前插入复制的内容

]p // 以恰当的缩进插入复制的内容

:1,100 co 200 // 将1~100的内容复制到第200行

:100,102 co $  // 将100~102行的内容复制到最后一行

搜索和替换

:set hlsearch // 开启匹配字符串的高亮显示

:nohlsearch // 关闭匹配字符串的高亮显示

* // 向后搜索光标所在位置的单词

# // 键可以向前搜索光标所在位置的单词

/Hello // 搜索Hello字符串

?Hello // 向前搜索Hello字符串

/Hello\c // 搜索Hello字符串(忽略大小写)

?Hello\c // 向前搜索Hello字符串(忽略大小写)

// 向正方向搜索下一个字符串

// 向反方向搜索下一个字符串

:%s/Hello/Test/g // 全局替换当前文件中所有的Hello为Test

:%s/Hello/Test/gc // 全局替换当前文件中所有的Hello为Test(需要逐个确认)

:%s/Hello/Test/gci // 全局替换当前文件中所有的Hello(忽略大小写)为Test(需要逐个确认)

本文标签: 常用 命令集 vim vi