欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

ubuntu下vi/vim 的基本用法讲解

程序员文章站 2022-04-19 15:54:02
1 简介 vim是文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。下面讲述一些必要的基本命令,而掌握好这些命令,您就能够很容易将vim当作一个...

1 简介

vim是文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。下面讲述一些必要的基本命令,而掌握好这些命令,您就能够很容易将vim当作一个通用的万能编辑器来使用了。

vim自带基础教程:在任意一台装有vim的机器上,命令行中输入vimtutor 然后就可以看到文档了。

2 基本命令

包含vim的基本介绍、使用模式、文件的打开关闭保存、插入文本或新建行、移动光标、删除、恢复字符或行、搜索等等。

vim有3个模式:插入模式、命令模式、低行模式。

插入模式:在此模式下可以输入字符,按ESC将回到命令模式。

命令模式:可以移动光标、删除字符等。

低行模式:可以保存文件、退出vi、设置vi、查找等功能(低行模式也可以看作是命令模式里的)。按shift + : 进入插入模式

2.1 打开文件、保存、关闭文件(vim命令模式下使用), // 是注释的意思

vi filename //打开filename文件

:w //保存文件

:w cszhi.com //保存至cszhi.com文件

:q //退出编辑器,如果文件已修改请使用下面的命令

:q!//退出编辑器,且不保存

:wq //退出编辑器,且保存文件

2.2 插入文本或行(vim命令模式下使用,执行下面命令后将进入插入模式,按ESC键可退出插入模式进入底行模式

a //在当前光标位置的右边添加文本

i //在当前光标位置的左边添加文本

A //在当前行的末尾位置添加文本

I //在当前行的开始处添加文本(非空字符的行首)

O //在当前行的上面新建一行

o //在当前行的下面新建一行

R //替换(覆盖)当前光标位置及后面的若干文本

J //合并光标所在行及下一行为一行(依然在命令模式)

2.3 移动光标(vim命令模式下使用)

①使用上下左右方向键

②命令模式下:

h 向左、j 向下、k 向上、l 向右。

空格键向右、Backspace向左、Enter移动到下一行首、-移动到上一行首。

2.3 删除、恢复字符或行(vim命令模式下使用)

x //删除当前字符

nx //删除从光标开始的n个字符

dd //删除当前行

ndd //向下删除当前行在内的n行

u //撤销上一步操作

U //撤销对当前行的所有操作

2.4 搜索(vim命令模式下使用)

/cszhi //向光标下搜索cszhi字符串

cszhi //向光标上搜索cszhi字符串

n //向下搜索前一个搜素动作

N //向上搜索前一个搜索动作

2.5 跳至指定行(vim底行模式下使用)

n+//向下跳n行

n-//向上跳n行

nG //跳到行号为n的行

G //跳至文件的底部

2.6 设置行号(vim命令模式下使用)

:set nu //显示行号

:set nonu //取消显示行号

2.7 复制、粘贴(vim命令模式下使用)

yy //将当前行复制到缓存区,也可以用 "ayy 复制,"a 为缓冲区,a也可以替换为a到z的任意字母,可以完成多个复制任务

nyy //将当前行向下n行复制到缓冲区,也可以用 "anyy 复制,"a 为缓冲区,a也可以替换为a到z的任意字母,可以完成多个复制任务

yw //复制从光标开始到词尾的字符

nyw //复制从光标开始的n个单词

y^ //复制从光标到行首的内容

y$ //复制从光标到行尾的内容

p //粘贴剪切板里的内容在光标后,如果使用了前面的自定义缓冲区,建议使用"ap 进行粘贴

P //粘贴剪切板里的内容在光标前,如果使用了前面的自定义缓冲区,建议使用"aP 进行粘贴

2.8 替换(vim命令模式下使用)

:s/old/new//用new替换行中首次出现的old

:s/old/new/g //用new替换行中所有的old

:n,m s/old/new/g //用new替换从n到m行里所有的old

:%s/old/new/g //用new替换当前文件里所有的old

2.9 编辑其他文件

:e otherfilename //编辑文件名为otherfilename的文件

2.10 修改文件格式

:set fileformat=unix //将文件修改为unix格式,如win下面的文本文件在linux下会出现^M

2.11 查看当前行信息(vim命令模式下使用)

ctrl+g

2.10 跳转到制定行(vim命令模式下使用)

number + shift + g

如果没有输入number则跳转到末尾。1+shit+g行首。

2.11vim 取消 查找 高亮

:set hlsearch "打开高亮搜索

:set nohlsearch "关闭高亮搜索

:nohl "只取消掉当前的搜索高亮

2.12 滚屏

ctrl+u\d 向上\下滚动半屏

ctrl+e\y 向上\下滚动一行

ctrl+b\f 向上\下滚动一屏

2.13移动

b、3b、w、3w:向前\后移动几个单词,标点也算一个单词。相应的大写状态为不含标点,即只把空格和换行符作为单词间隔符。

$(shift+4):移动到行尾 3$:移动到3行后的行尾

0 行首有空格

^(shift+6):移动到行首,

+:移到下一行的行首

-: 移到上一行的行首

2.14折叠

命令小结
zc 关闭当前打开的折叠
zo 打开当前的折叠
zm 关闭所有折叠
zM 关闭所有折叠及其嵌套的折叠
zr 打开所有折叠
zR 打开所有折叠及其嵌套的折叠
zd 删除当前折叠
zE 删除所有折叠
zj 移动至下一个折叠
zk 移动至上一个折叠
zn 禁用折叠
zN 启用折叠

2.15 函数折叠(命令模式)

zf

shift+%

2.16 代码格式化

#格式化全文

gg=G

#自动缩进当前行

==

#格式化当前光标接下来的10行

10=j

#格式化当前光标向上的10行

10=k

#格式化选定的行

v(向上下选择)

=

#命令解释

gg #跳转到文件首行

= #应用缩进格式

G #直到文件结束

2.17在函数中移动光标(命令模式)

[{ 转到上一个位于第一列的"{"

}] 转到下一个位于第一列的"{"

{ 转到上一个空行

} 转到下一个空行

gd 转到当前光标所指的局部变量的定义

* 转到当前光标所指的单词下一次出现的地方

# 转到当前光标所指的单词上一次出现的地方