Linux系统编程-vi/vim Command

51 篇文章 6 订阅
31 篇文章 1 订阅

一、vi

vi编辑器是所有Unix及Linux系统下标准的编辑器,他就相当于windows系统中的记事本一样.

二、vim

vim 具有程序编辑的能力,可以以字体颜色辨别语法的正确性,方便程序设计;
vim可以当作vi的升级版本,他可以用多种颜色的方式来显示一些特殊的信息。
vim里面加入了很多额外的功能,例如支持正则表达式的搜索、多文件编辑、块复制等等。 这对于我们在Linux上进行一些配置文件的修改工作时是很棒的功能。

三、vi的三种模式

命令行模式:
在命令行模式下,任何键盘输入都是命令.

插入模式:
替换模式:
在插入模式和替换模式下,键盘输入的才是字符。
插入模式和替换模式也合称为编辑模式。

四、vi command

  1. 打开文件
#创建/打开文件 
#打开一个文件,如果文件不存在,就创建它。
vi 文件名
  1. 模式切换
Esc  从编辑模式切换到命令行模式。

#下面命令区分大小写
#由命令行模式进入编辑模式
i    在光标所在位置 前面开始插入。

a    在光标所在的位置 后面开始插入。

o   在光标所在位置行的 下面插入空白行 且光标跟随新插入的行。


O   在光标所在位置行的 上面插入空白行 且光标跟随新插入的行。

I    在光标所在位置行的行首开始插入。

A   在光标所在位置行的行末开始插入。

  1. 光标移动
    以下命令都是命令行模式下:
    下面的命令和上下左右键的作用是一样的。
k    类似方向键上。

j    类似方向键下。

h   类似方向键左。

l (小写L)类似方向键右。
  1. 翻页
    以下命令都是命令行模式下:
Ctrl+u  向上翻半页。

Ctrl+d  向下翻页。

5. 光标所在位置的行号和文件的总行数
以下命令都是命令行模式下:

Ctrl+g      显示光标所在位置的行号和文件的总行数。
  1. 光标跳转
    以下命令都是命令行模式下:
文件内跳转:
nG  #光标跳到文件的第n行行首。

gg  #光标跳到文件第一行行首。
G   #光标跳到文件最后一行行尾。

行跳转:
:5+回车   #光标跳到第5行。

:n+回车   #光标跳到第n行。

0    #光标跳到当前行的行首。

$    #光标跳到当前行的行尾。

单词光标跳转:
w    #光标跳到下个单词的开头。

b   # 光标跳到上个单词的开头。

e  # 光标跳到本单词的尾部。

符号跳转:
%   #在一对小括号或中括号上跳转

  1. 删除
1.命令行模式下:	
这些删除其实都是剪切,vim没有直接删除的功能。

利用光标删除行:
dd   #删除光标所在位置的一行。
ndd  #如"3dd"表示删除光标所在位置开始的3行。
D   #删除光标至行尾的数据
d+$ #删除光标至行尾的数据

利用光标删除单个字符:
x   #删除当前字符且工作模式不变
s	#删除当前字符,且工作模式变为插入模式

利用光标删除单词: 
dw  #删除整个单词或删除光标至单词结尾
d0	#删除光标至行首

删除指定区域数据:
v #进入VISUAL模式
按方向键选中数据
再按 d 删除相应数据.
  1. 复制粘贴
1.命令行模式下:	

光标位置的复制粘贴
#复制成功会有提示
yy   #将光标所在位置的一行复制到缓冲区。

nyy #将光标所在位置的n行复制到缓冲区。

p   #小写p 将缓冲区里的内容粘贴到光标后。
P	#大写P 将缓冲区里的内容粘贴到光标前。

#以下两个命令在windows和UNIX中是通用的。
Ctl+insert   #复制鼠标选中的文本,相当于Ctl+c。

Shift+insert #输出鼠标选中的文本,相当于Ctl+v。
  1. 替换
1.命令行模式下:	

字符替换:
r   #(replace)替换光标所在位置的一个字符,不会改变编辑模式
R   #从光标所在位置开始替换,直到按下"Esc"。
~   #对光标当前所在的位置的字符进行大小写转换。

单词替换:
cw  #从光标所在位置开始替换单词,直到按下"Esc"。

行数据替换:
J   #把当前行的下一行接到当前行的尾部。
:s /原数据/新数据 # 末行模式下,一定要将光标停留在待替换行上,只替换该行第一个对应原数据的数据

全篇替换:
:%s /原数据/新数据  #末行模式下,只替换全篇数据每一行第一个对应原数据的数据
:%s /原数据/新数据/g #末行模式下,替换全篇对应的原数据

指定行替换:
:起始行号,终止行号s /原数据/新数据/g #末行模式下,替换指定行间对应的全部原数据

  1. 撤销和重复命令
    以下命令都是命令行模式下:
u   撤销命令,可多次撤销。

ctrl+r 恢复撤销命令

.    重复执行上一次执行的vi命令。
  1. 查找
命令行模式下:	

查找指定字符串:
/abcd  #在当前打开的文件中查找“abcd”文本内容。
敲回车再使用下面功能
n      查找下一个。

N      查找上一下。

查找指定字符:
光标停在该字符上
命令模式下:* 查找下一个
		   # (这个不是注释,是井字符)查找上一个
		   
  1. 分屏

:sp #分横屏
:vsp #分竖屏
ctrl+ww  #光标在不同分屏间切换
:q #退出光标所在分屏
:qall #退出所有分屏

高级用法:
:vsp hello.h #分屏并指定分屏的文件为hello.h。保存后会创建相应文件

  1. 保存退出
命令行模式下:	
:w回车   存盘。

:w!回车   强制存盘。

:wq回车 存盘退出。

:x回车    存盘退出。

:q回车  不存盘退出。

:q!回车  不存盘强制退出。
  1. 光标问题
命令行模式下:	
#lock terminal
ctrl+s

#unlock terminal
ctrl+q
  1. 代码相关
自动格式化代码格式:
gg=G   #。只能调整一般的格式,复杂的不起作用

跳转至man手册:
光标至于寒暑表单词上,使用 K 跳转
指定卷(n为任意) nK

查看宏定义:
将光标置于待查看宏定义单词上,使用 [+d 查看定义语句(注意:只在本文件中找,跨文件无效)。
  1. 可以在vim命令行模式下直接执行语句
:ls -l 
:! gcc hello.c -o hello

五、vim配置

1.系统根目录下,如果没有2的配置就显示这个
/etc/vim/vimrc

2.用户目录下
~/.vimrc
优先级更高,优先显示该配置

具体配置内容可去百度上下载替换即可。

我自己用配置如下:

 
set nu "显示行号

set syntax=on " 语法高亮

set confirm " 在处理未保存或只读文件的时候,弹出确认

set autoindent " 自动缩进
set cindent

set tabstop=4 " Tab键的宽度

set softtabstop=4 " 统一缩进为4
set shiftwidth=4

set noexpandtab  " 不要用空格代替制表符

set smarttab " 在行和段开始处使用制表符

set number " 显示行号

set history=1000 " 历史记录数

set nobackup  "禁止生成临时文件
set noswapfile

set ignorecase "搜索忽略大小写

set hlsearch "搜索逐字符高亮
set incsearch

set nobackup "从不备份  

hi LineNr          ctermfg=239 ctermbg=235 "行号栏

六、打开文件报错问题

报错如下:
在这里插入图片描述
使用如下命令清除问题文件:

rm .*.swp
#上面的不行就尝试下面的
rm -rf .*.swp

然后再次打开该文件就不会报错了。

打开文件中文乱码问题

修改etc/vimrc 文件:
添加一下代码:

set fileencodings=utf-8,gbk,latin1
pl@pl-virtual-machine:/etc/vim$ sudo vim vimrc
#用超级权限进入才能修改后保存,否则打开的是只读文件,修改后无法保存

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值