前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux中vi与vim编辑操作

Linux中vi与vim编辑操作

作者头像
CtrlX
发布2022-11-18 16:12:47
3.1K0
发布2022-11-18 16:12:47
举报
文章被收录于专栏:C++核心编程C++核心编程

1. 基本操作

1.1 vi的三种模式

1.命令模式

2.编辑模式

3.末行模式(命令模式下,按“:”即可进入末行模式)

默认情况下,VI编辑器是命令模式,需要在里面写东西的时候需要进入编辑模式

命令模式到编辑模式:插入命令i,附加命令a,打开命令o,修改命令c,取代命令r,替换命令s

编辑模式到命令模式:Esc

退出流程: 1.进入命令模式 2.进入末行模式 3.在末行模式输入以下内容,对应相应操作

代码语言:javascript
复制
【:w】 保存文件



【:w!】 若文件为只读,强制保存文件



【:q】 离开vi



【:q!】 不保存强制离开vi



【:wq】 保存后离开



【:wq!】 强制保存后离开



【:! command】 暂时离开vi到命令行下执行一个命令后的显示结果



【:set nu】 显示行号



【:set nonu】 取消显示行号



【:w newfile】 另存为

1.2 插入和移动光标命令

代码语言:javascript
复制
i:插入光标前一个字符

I:插入行首

a:插入光标后一个字符

A:插入行末

o:向下新开一行,插入行首

O:向上新开一行,插入行首

移动光标

h:左移     

j:下移        

k:上移      

l:右移      

M:光标移动中间行      

L:光标移动到屏幕最后一行行首      

G:移动到指定行,行号 -G 在命令行中输入 vi +26 samp.txt 命令直接打开文件到达 26 行,在 vi 编辑器中也可以输入 :26 跳转到 26 行       

{:按段移动,上移      

}:按段移动,下移     

Ctr-d:向下翻半屏     

Ctr-u:向上翻半屏     

gg:光标移动文件开头      

G:光标移动文件末尾     

1.3 删除命令

代码语言:javascript
复制
常用:

x    删除光标后一个字符,相当于del

X    删除光标前一个字符,相当于Backspace

dd   删除光标所在行

ndd  删除指定的行数

:n1,n2d  删除n1到n2行



不常用:

D  删除光标后本行所有的内容,包括光标所在字符

do 删至行首

d$ 删至行尾

1.4 撤销命令

代码语言:javascript
复制
u:一步一步撤销
ctr-r:反撤销

1.5 重复命令

代码语言:javascript
复制
. 这是个点,重复上一次操作的命令

文本行移动

>>:文本行右移

<<:文本行左移

1.6 复制剪切粘贴

代码语言:javascript
复制
可视模式(选择文本)

v 按字符移动,选中文本

V 按行移动

ctrl+v 按列选择

y 选择了某一块后,复制到缓冲区待用

yy 复制当前行

nyy 复制n行

yG 复制到最后一行


p:在光标所在位置向下新开辟一行,粘贴,大写表示在光标之上


所有的y换成d,就是把复制变成了剪切


不常用:

y^ 复制光标位置到行头内容

y$ 复制光标位置到行尾内容

1.7 区域替换 搜索

代码语言:javascript
复制
/string  向光标之下寻找一个名称为string字符串

?string   向光标之上寻找一个名称为string字符串

n  正向查找,搜索出的string,可以理解成next

N  反向查找,搜索出的string,可以理解成Not next


n是从上到下,N是从下到上

:n1,n2s/string1/string2/g  这里的n1是查找的开始行数,n2是查找结束的行数。【:2,7s/ddd/fff/g】在第2行,第7行之间,将ddd替换成fff

:1,$s/string1/string2/g   从第一行到最后一行寻找 string1 字符串,并将该字符串替换为 string2 !(常用)

:1,$s/string1/string2/gc  从第一行到最后一行寻找 string1 字符串,并将该字符串替换为 string2 !且在替换前显示提示字符给用户确认 (confirm) 是否需要替换!(常用)

:s/vivian/sky/     替换当前行第一个 vivian 为 sky

:s/vivian/sky/g     替换当前行所有 vivian 为 sky

:n,$s/vivian/sky/   替换第 n 行开始到最后一行中每一行的第一个 vivian 为 sky

:n,$s/vivian/sky/g   替换第 n 行开始到最后一行中每一行所有 vivian 为 sky

n 为数字,若 n 为 .,表示从当前行开始到最后一行

:%s/vivian/sky/(等同于 :g/vivian/s//sky/) 替换每一行的第一个 vivian 为 sky

:%s/vivian/sky/g(等同于 :g/vivian/s//sky/g) 替换每一行中所有 vivian 为 sky

:s#vivian/#sky/# 替换当前行第一个 vivian/ 为 sky/

:%s+/oradata/apras/+/user01/apras1+ (使用+ 来 替换 / ): /oradata/apras/替换成/user01/apras1/


不加 g,表示只对搜索字符串的首次出现进行替换;


 g放在命令末尾,表示对搜索字符串的每次出现进行替换;

g 放在命令开头,表示对正文中所有包含搜索字符串的行进行替换操作

2. 高级操作

2.1 从一个文件复制n行到另外一个文件

1)打开源文件,光标定位到要复制的第一行(光标所在行为复制的第一行),输入”anyy

其中”为引号,a为变量名,用其他字母或数字均可,但只能有一位,n为需要复制的行数,yy为复制命令。

2)打开目标文件,光标定位到粘贴位置(从光标的下一行插入),输入”ap

其中”为引号,a为变量名,与复制时所用变量名一致,p为zh粘贴命令。

2.2 注释与解注释

注释:采用批量替换

代码语言:javascript
复制
:5,10s/^/\/\//g 在5到10行首插入//

解注释

1)批量替换

代码语言:javascript
复制
:5,10s/^\/\///g

2)ctrl+v按列选择后按dd

2.3 快速在查看编译的警告/错误和编辑间切换

这不是什么难事,只是个小技巧

比如vim test.c 编辑了一个程序后,退出,用gcc -o test.o test.c 命令编译,发现有警告或者错误,又要用vim test.c命令来修改,不是很麻烦,但是不够优雅。

其实你编辑完代码后只需要按esc进入命令模式输出:!gcc -o test.o test.c就可以实现编译,编译的警告和错误都会显示,此时不会退出vim,按enter即可回到vim。

3. 修改配置

修改当前用户配置:vim ~/.vimrc只对当前用户生效

修改全局配置:sudo vim /etc/vim/vimrc或者sudo /etc/vimrc,对所有用户生效

代码语言:javascript
复制
set nu                      " 显示行号



set tabstop=4               " 设置软制表符宽度为4



set softtabstop=4           " 设置软制表符宽度为4



set shiftwidth=4            " 设置缩进的空格数为4



set autoindent              " 设置自动缩进:即每行的缩进值与上一行相等



set cindent                 " 使用 C/C++ 语言的自动缩进方式



set cursorline              " 突出显示当前行



set expandtab               " 空格代替制表符



set showmatch               " 光标遇到圆括号、方括号、大括号时,自动高亮对应的另一个圆括号、方括号和大括号



set ruler                   " 在状态栏显示光标的当前位置(位于哪一行哪一列)



set guifont=Consolas:h15    " 设置字体和字体大小



colorscheme molokai         " 设置主题为molokai



set nobackup                " 取消备份文件



                            " 默认情况下,文件保存时,会额外创建一个备份文件,它的文件名是在原文件名的末尾,再添加一个波浪号~



setlocal noswapfile         " 不创建交换文件。交换文件主要用于系统崩溃时恢复文件,文件名的开头是.、结尾是.swp



set noundofile              " 取消生成un文件


set hlsearch                " 设置高亮显示搜索字符串



set showmode                " 在底部显示,当前处于命令模式还是插入模式



set showcmd                 " 命令模式下,在底部显示,当前键入的指令。比如输入快捷键将在底部显示具体命令



set t_Co=256                " 启用256色



set noerrorbells            " 出错时不要发出响声



" 高亮显示



syntax on



syntax enable
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-11-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 基本操作
    • 1.1 vi的三种模式
      • 1.2 插入和移动光标命令
        • 1.3 删除命令
          • 1.4 撤销命令
            • 1.5 重复命令
              • 1.6 复制剪切粘贴
                • 1.7 区域替换 搜索
                • 2. 高级操作
                  • 2.1 从一个文件复制n行到另外一个文件
                    • 2.2 注释与解注释
                      • 2.3 快速在查看编译的警告/错误和编辑间切换
                      • 3. 修改配置
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档