• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

Vim的基本操作

linux wangting 3个月前 (09-04) 46次浏览

vim 是 vi 的增强版(vi Improved),与 vi 编辑器完全兼容,而且实现了很多增强功能。

一、基础使用

1.打开,新建文件

$> vi hello.c //打开,新建一个叫hello.c的文件

2.进入 vi 后,光标处于文件中特定的某行上,可在 vi 命令上加上行号和文件名,

$> vi +5 hello.c 

进入 vi ,光标处于文件最末行,则只需去掉命令中+后面的数字 n 即可

$> vi + hello.c

3.模式匹配

进入 vi ,光标就处于文件中第一个与指定模式串相匹配的那行上开头。

$> vi +/模式字符串  文件名$> vi +/main hello.c

 

二、理论概述

1命令模式(操作模式)

按esc键进入,如果不确 定自己在什么模式,多按几下esc

1)插入

o 可以在光标面新建一行(不论在该行的那个位置)

O 在光标面新建一行

a 在光标面插入

A 在当前行的尾输入文本

i 进入编辑模式,在光标面插入

I 在当前行输入文本

2)移动光标

h 光标移一个字符

k 光标移一行

j 光标移一行

l 光标移一个字符

w 光标移至下一个单词的字首

W 光标右移到下一个空格分割单词的字首

e 光标移至本单词的字尾

E 光标移至下一个空格分割的字尾

b 光标移至上一个单词的字首

B 光标移到上一个空格分割单词的字首

 

{ 光标向前移至一个段落的开头

} 光标向后移至一个段落的开头

$ 调转到行尾

0 调转至行首

gg 文章开头

G 文章结尾

nG 调转到第n行

3)复制、剪切、粘贴

yw 将从光标开始往后到空格为止(包含空格)(复制一个单词)复制(之后仍处于命令模式)

y0 将从光标开始到行首的所有字符复制(之后仍处于命令模式)

y$ 将从光标开始到行末的所有字符复制(之后仍处于命令模式)

Yy$

y( 复制上一句开始的所有字符

y) 复制下一句开始的所有字符

y{ 复制上一段开始的所有字符

y} 复制下一段开始的所有字符

yy 复制当前行    

nyy 复制从当前行开始数n行

 

 

x 将光标显示的字符移到缓冲区(之后仍处于命令模式)

X 将光标显示的光标之的字符移到缓冲区(之后仍处于命令模式)

dw 将从光标开始往到空格为止(包含空格)(删除一个单词)移到缓冲区(之后仍处于命令模式)

dG 将光标所在行到文末的所有行删除

cw 将从光标开始往到空格为止(包含空格)(删除一个单词)移到缓冲区,之后进入编辑模式

ce 同cw

cb 将从光标开始往到空格为止(包含空格)(删除一个单词)移到缓冲区,之后可以直接输入新的文本

d0 将从光标开始到行首的所有字符移到缓冲区(之后仍处于命令模式)

d$ 将从光标开始到行末的所有字符移到缓冲区(之后仍处于命令模式)

D 同d$

d( 删除到上一句开始的所有字符

d) 删除到下一句开始的所有字符

d{ 删除到上一段开始的所有字符

d} 删除到下一段开始的所有字符

d)

c$ 将从光标开始到行末的所有字符移到缓冲区,之后进入编辑模式 

C 同c

$dd 将当前行移到缓冲区(剪切操作)(之后仍处于命令模式)

ndd 将从当前行往开始数n行移到缓冲区

cc 将当前行移到缓冲区(剪切操作),之后进入编辑模式

ncc 将从当前行往后开始数n行移到缓冲区,之后进入编辑模式

 

 

p 光标下一行开始粘贴一行/光标之后字符串

P 光标上一行开始粘贴一行/光标之前字符串

4)替换

r 替换单个字符,光标显示的那个

R 一直替换字符,直到按esc截至

5)撤销

u 撤销上一步

U 撤销到上一次保存

6)查找

/ 光标处向查找字符

? 光标处向查找字符

n 显示搜索命令定位到的一个字符串

N 显示搜索结果定位到的一个字符串

b 光标移动到当前单词/上一个单词的开始

w 光标移动到下一个单词的开始

e 光标移动到当前单词/下一个单词的末尾

7)文本选择

v 按字选择

V 按行选择

8)文本移动

n>> 光标当前行及其下面共n行都 8 个空格

n<< 光标当前行及其下面共n行都8 个空格

9)重复上一步

. 重复上一步命令,减少重复操作

9)滚屏命令

<C-u> <PgUp> 将屏幕向(文件头方向)翻滚半屏

<C-d> <PgDn> 将屏幕向(文件尾方向)翻滚半屏

<C-b> 将屏幕向文件方向翻滚一整屏

<C-f> 将屏幕向文件方向翻滚一整屏

10)保存退出

 

ZZ 同末行命令模式下的 :wq

注意:所输入的命令并不回显在屏幕上。

    若输入不是vim的合法的指令,Vim会鸣笛报警

2编辑模式

<C-u> 撤销

3末行命令模式(ex 转义模式)

这些操作如设置快捷键等退出之后再次进入就不管用了,若要永久起作用就写配置文件

1)新建、打开、保存、退出

: 进入末行命令行模式

:e filename 创建新文件,在同一个目录

:n filename 加载其他文件,在同一个目录

:w 相当于<C-s>

:w filename 另存为一个新的文件

:w!

:w! filename

 

:q

:q!

:wq

:wq! 不是所有人都可以使用,只有文件所有者与root才能在文件仅r–的情况下使用

:x 强制退出

2)跳转、删除、撤销、导入

:n 调转到改行

:n1,n2d 删除从n1到n2的行

:e! 撤销到上一次保存的结果

:r /etc/issue 在光标处导入一个新文件

 :!命令 在不退出vi的情况下执行命令

  :r !date //将文本编辑时间直接输入到光标所在位

3)替换

:imj 将第 i 行替换到第 j 一行

  :10m5 //将第10行放到第5行后面

:%s/要替换的字符串/新的字符串/g 进行全文替换

  /* % 表示全文   * $ 表示文件尾   * . 当前行   */  :.,$s/prinft/printf/g  //将当前行到结尾当中的prift替换成printf

:n1,n2s/要替换的字符串/新的字符串/g  在n1到n2之间替换,不询问

  :1,4s/^/#/g      //在1到4行的行首插入

:n1,n2s/要替换的字符串/新的字符串/c  在n1到n2之间替换,询问

  :1,4s/^/#/c      //在1到4行的行首插入,并且询问

二、vim的一些小技巧

1.Vim的分割窗口split命令

:split 水平分割

:vsplit 垂直分割

:split hello.c //分割窗口打开hello.c:new    //分割形式新建文件

:close 关闭窗口

vim -o one.txt two.txt three.txt //终端下使用的,就是一次性打开3个文件并使用分割形式显示

<C-w> 窗口间跳转

<C-w> h 跳转到左边的窗口
<C-w> j 跳转到下面的窗口
<C-w> k 跳转到上面的窗口
<C-w> l 跳转到右边的窗口

<C-w> t 跳转到最顶上的窗口
<C-w> b 跳转到最底下的窗口

2.Vim的文件间切换命令

//vim还未启动,同时打开多个文件vim file1 file2 ... filen  //可以打开所有想要打开的文件//vim启动以后,想打开其他文件:open file

:bn—下一个文件
:bp—上一个文件

3.Vim的便捷设置

:set nu 显示行号

:set nonu 不显示行号

:set hlsearch 搜索的词显示高亮

:set nohlsearch 搜索的词显示高亮

:syntax on 语法高亮

:syntax off 语法取消高亮

3.Vim定义快捷键

:map <C-v-p> I#<ESC>  ctrl加上v在加上需要定义的快捷键(这里举例是p)定义该快捷键是等价于在命令模式将每一行行首添加一个#

Vim的基本操作

:map <C-v-h>  iyangbingxue19990502@gmail.com<ESC> 定义插入邮箱地址,并退回到命令模式 

Vim的基本操作

:ab mymail yangbingxue19990502@gamil.com 在文中将mymail替换成yangbingxue19990502@gmail.com 只要敲击完之后按“Space”或者”Enter”就会替换

Vim的基本操作

:unab mymail 取消mymail关联

Vim的基本操作

三、永久生效

在用户的家目录下创建.vimrc将操作写入即可(里面只能放一些编辑模式的命令)

针对root用户

#> vi /root/.vimrc        //针对root用户 set nu 设置行号 map ^p I#<ESC> //定义快捷键 ab mymail yangbingxue19990502@gamil.com //定义快捷键

针对普通用户Tony

#> vi /home/Tony/.vimrc  (针对普通用户Tony)    set nu     设置行号    map ^p I#<ESC>  //定义快捷键    ab mymail yangbingxue19990502@gamil.com //定义快捷键

 

 


程序员灯塔 , 版权所有
转载请注明原文链接:https://www.wangt.cc/2019/09/fa6e891029/
喜欢 (1)