【linux】4:编辑器vim的使用

目录

一、Linux编辑器vim使用

[二、 vim的基本概念](#二、 vim的基本概念)

三、vim的基本操作

四、命令模式

五、视图模式

六、底行模式

七、使用vim的技巧

八、vim配置


一、Linux编辑器vim使用

vim是linux系统默认安装的,不需要安装就可以直接使用。

vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于×window、macos、windows。

二、 vim的基本概念

vim的三种模式(其实有好多模式,目前掌握这3种即可),分别是命令模式(command

mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:

  • 正常/普通/命令模式(Normalmode)
    • 控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insertmode下,或者到last line mode
  • 插入模式(Insert mode)
    • 只有在Insertmode下,才可以做文字输入,按「ESC」键可回到命令行模式。该模式是我们后面用的最频繁的编辑模式。
  • 底行模式(last line mode)
    • 文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。
    • 在命令模式下,*shift+:*即可进入该模式。要查看你的所有模式:打开vim,底行模式直接输入help vim-modes

三、vim的基本操作

进入vim,在系统提示符号输入vim及文件名称后,就进入vim全屏幕编辑画面:

  • $vim test.c
  • 不过有一点要特别注意,就是你进入vim之后,是处于[正常模式],你要切换到[插入模式]才能够输入文字。

[正常模式]切换至[插入模式]

  • 输入a
  • 输入i
  • 输入o

[插入模式]切换至[正常模式]

  • 目前处于[插入模式],就只能一直输入文字,如果发现输错了字,想用光标键往回移动,将该字删除,可以先按一下「ESC」键转到[正常模式]再删除文字。当然,也可以直接删除。

正常模式\]切换至\[末行模式

  • shift+;,其实就是输入 :

退出vim及保存文件,在[正常模式]下,按一下「:」冒号键进入「Last line mode」,例如:

  • :w(保存当前文件)
  • :wq(输入「wq」,存盘并退出vim)
  • :q!(输入q!,不存盘强制退出vim)

四、命令模式

从命令模式到插入模式:

  • 按i切换进入插入模式「insert mode」,按"i"进入插入模式后是从光标当前位置开始输入文件;
  • 按a进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;
  • 按o进入插入模式后,是插入新的一行,从行首开始输入文字。

移动光标:

  • 按 gg:快速让光标定位到开始
  • 按 G :快速让光标定位到末尾
  • n G :快速让光标定位到第n行
  • 按 $:移动到光标所在行的"行尾"
  • 按 ^ :移动到光标所在行的"行首"
  • vim可以直接用键盘上的光标来上下左右移动,但正规的vim是用小写英文字母h、j、
    k、l,分别控制光标左、下、上、右移一格,可以在前面加数字
  • w:以单词为单位,向后移动,可以在前面加数字
  • b:以单词为单位,向前移动,可以在前面加数字

复制:

  • yy:复制当前行
  • p:光标所在位置进行粘贴
  • n+yy:复制当前光标的下面n行
  • n+p:光标所在位置进行n次粘贴

剪切:

  • dd:剪切当前行,或者删除
  • p:将剪切的行复制到当前光标位置
  • n+dd:剪切当前行下面的n行,或者删除n行
  • n+p:将剪切的行复制n次到当前光标位置

替换:

  • r:替换光标所在字符,再按目标字符
  • n+r:替换光标所在位置后的n字符,再按目标字符
  • shift+~:大小写切换

shift+r:R,会进入替换模式,左下角有一个replace标志。这个模式输入字符,回替换光标位置所在字符。

按Esc可以从替换模式回到命令模式

撤销:

  • u:撤销历史操作
  • ctrl+r:撤销u操作

一旦退出文件编辑,无法在进行撤销了

但是你只是保存,没有进行q退出,还是可以撤销

删除文字:

  • x:删除当前光标位置的字符
  • n+x:删除当前光标位置的后n个字符
  • X:删除当前光标的前面一个字符
  • n+X:删除当前光标的前面n个字符

查找:

  • 按shift+3=#:选中单词,按n逆向查找

五、视图模式

按ctrl+v进入视图模式,按Esc从视图模式到命令模式。

注释:

  1. 按ctrl+v进入视图模式
  2. 按h,j,k,l选择区域(G选择所有)
  3. 按shift+i进入插入模式,输入//
  4. 按Esc就可以将选择的区域注释,并且回到命令模式

取消注释:

  1. 按ctrl+v进入视图模式
  2. 按h,j,k,l选择//区域
  3. 按d就可以取消注释

六、底行模式

在使用末行模式之前,请记住先按「ESC」键确定您已经处于正常模式,再按「:」冒号即可进入末行模式。

  • w:保存
  • q:退出
  • !:强制操作

:w:保存

:q!:退出

:wq:保存退出

:w!:强制保存

:q!:强制退出

:wq!:强制保存退出

列出行号

  • set nu:输入set nu后,会在文件中的每一行前面列出行号。
  • no nu:取消行号

:!+命令:可以在不退出vim的情况下,执行命令

:%s/hello/world/ :将所有hello替换成world

:vs new_file:在vim里面分屏操作,按ctrl+ww可以切换

:/print:查找print单词。

七、使用vim的技巧

  • vim file n:进入vim编辑器,光标在第n行。
  • !v:执行最近历史命令v开头的命令

八、vim配置

配置文件的位置

  • ·在目录/etc/下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效。
  • 而在每个用户的主目录下,都可以自己建立私有的配置文件,命名为:"vimrc"。例如,/root目录下,通常已经存在一个.vimrc文件,如果不存在,则创建之。
  • 切换用户成为自己执行su,进入自己的主工作目录,执行cd~
  • 打开自己目录下的.vimrc文件,执行vim.vimrc

常用配置选项,用来测试

set syntax=on " 语法高亮

set noeb or noerrorbells "关闭错误信息响铃

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

setautoindent 自动缩进

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 gdefault "行内替换

set enc=utf-8 "编码设置

set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936

set langmenu=zh_CN.UTF-8 "语言设置

set laststatus=2" 总是显示状态行

setruler " 在编辑过程中,在右下角显示光标位置的状态行

set cmdheight=2 " 命令行(在状态行下)的高度,默认为1,这里是2

filetype on " 侦测文件类型

filetype plugin on "载入文件类型插件

filetype indent on " 为特定文件类型载入相关缩进文件

set viminfo+=! " 保存全局变量

set linespace=0 "字符间插入的像素行数目

set wildmenu "增强模式中的命令行自动完成操作

set backspace=2 "使回格键(backspace)正常处理indent, eol, start等

setwhichwrap+=<,>,h,l " 允许backspace和光标键跨越行边界

" 可以在buffer的任何地方使用鼠标(类似office中在工作区双击鼠标定位)

setautochdir " 自动切换当前目录为当前文件所在的目录

setbackupcopy=yes " 设置备份时的行为为覆盖

set ignorecasesmartcase "搜索时忽略大小写,但在有一个或以上大写字母时仍大小写敏感

setnowrapscan " 禁止在搜索到文件两端时重新搜索

setincsearch " 输入搜索内容时就显示搜索结果

sethlsearch " 搜索时高亮显示被找到的文本

setautochdir " 自动切换当前目录为当前文件所在的目录

setbackupcopy=yes " 设置备份时的行为为覆盖

set ignorecasesmartcase "搜索时忽略大小写,但在有一个或以上大写字母时仍大小写敏感

setnowrapscan " 禁止在搜索到文件两端时重新搜索

setincsearch " 输入搜索内容时就显示搜索结果

sethlsearch " 搜索时高亮显示被找到的文本

set mouse=a

set selection=exclusive

set selectmode=mouse,key

set report=0 " 通过使用: commands命令,告诉我们文件的哪一行被改变过

setshortmess=atI " 启动的时候不显示那个援助索马里儿童的提示

set fillchars=vert:\ ,stl:\,stlnc:\ " 在被分割的窗口间显示空白,便于阅读

setshowmatch " 高亮显示匹配的括号

set nocursorline " 不突出显示当前行

set matchtime=5 " 匹配括号高亮的时间(单位是十分之一秒)

set scrolloff=3 " 光标移动到buffer的顶部和底部时保持3行距离

set smartindent "为C程序提供自动缩进

setfoldenable " 开始折叠

setfoldmethod=syntax " 设置语法折叠

setfoldcolumn=0 " 设置折叠区域的宽度

setlocalfoldlevel=1 " 设置折叠层数为

" setfoldclose=all " 设置为自动关闭折叠

相关推荐
燃于AC之乐3 小时前
【Linux系统编程】进程调度解析:优先级与O(1)调度算法
linux·操作系统·进程调度·进程优先级·调度算法
Nick.Q11 小时前
vim插件的管理与离线安装
linux·编辑器·vim
头发还没掉光光13 小时前
HTTP协议从基础到实战全解析
linux·服务器·网络·c++·网络协议·http
小白同学_C13 小时前
Lab2-system calls && MIT6.1810操作系统工程【持续更新】
linux·c/c++·操作系统os
物理与数学13 小时前
linux内核 struct super_block
linux·linux内核
Getgit13 小时前
Linux 下查看 DNS 配置信息的常用命令详解
linux·运维·服务器·面试·maven
lucky九年14 小时前
Treasure vscode插件
ide·vscode·编辑器
zhangrelay14 小时前
Linux(ubuntu)如何锁定cpu频率工作在最低能耗模式下
linux·笔记·学习
_OP_CHEN14 小时前
【Linux系统编程】(二十)揭秘 Linux 文件描述符:从底层原理到实战应用,一篇吃透 fd 本质!
linux·后端·操作系统·c/c++·重定向·文件描述符·linux文件