vim常用命令

2022-12-14 1,116 1

vim简介

vim是一款功能强大的文本编辑器,也是早年vi编辑器的加强版,它的最大特色就是使用命令进行编辑,完全脱离了鼠标的操作,因工作及生活用电脑都习惯Linux系统很久了,对于vim很多命令有时还是容易忘记,所以今天进行的汇总和记录

高效的vim命令功能图所示:
file

vim 工作模式

  • 命令模式
  • 编辑模式
  • 末行模式

file

注意点:编辑模式和末行模式之间不能直接进行切换,都需要经过命令模式来完成

命令模式指令

  • 常用命令
命令 描述
u 撤销回退操作
Ctrl+r 反撤销
yy 复制
p 粘贴
v 可视化单个字符选中操作
V 可视化按行选中操作
:/搜索的内容 搜索指定内容
G 回到末行
gg 回到第一行
  • 扩展命令
命令 描述
数字+yy 复制当前行之后的多行
数字+dd 剪切当前行之后的多行
>> 往右缩进
<< 往左缩进
:%s/要替换的内容/替换后的内容/g 全局替换
:开始行数,结束行数s/要替换的内容/替换后的内容 局部替换
. 重复上一次命令操作
shift+6、I 回到当前行的行首
shift+4、A 回到当前行的行末
ctrl+f 下一屏
ctrl+b 上一屏

末行模式指令

命令 描述
:%s/要替换的内容/替换后的内容/g 全局替换
:开始行数,结束行数s/要替换的内容/替换后的内容 局部替换

vim寄存器

vim寄存器和系统剪贴板不是一个东西,顾名思义,vim寄存器的数据作用域仅限于vim本地,甚至如果开多个vim窗口,每个窗口都有一套自己完整的寄存器,互相不影响。而系统剪贴板作为系统级别的全局变量,默认是不能混用的。

使用如下命令查看寄存器

:reg [register_name] 查看所有寄存器

:reg [register_name] 查看指定寄存器
  • " 寄存器
    未命名的寄存器,是 Vim的默认寄存器,例如删除、复制等操作的内容都会被保存到这里。

  • 0-9寄存器
    表示数字寄存器,是 Vim 用来保存最近复制、删除等操作的内容,其中 0 号寄存器保存的是最近一次的操作内容。

  • a-zA-Z寄存器
    表示用户寄存器,Vim 不会读写这部分寄存器

  • 寄存器
    剪切板寄存器,关联系统剪切板,保存在这个寄存器中的内容可以被系统其他程序访问,也可以通过这个寄存器访问其他程序保存到剪切板中的内容。

打通+寄存器和系统剪贴板的映射

vim专门提供了"+寄存器作为对系统剪贴板的映射,可以理解成自动把"+寄存器的内容再复制一份到系统剪贴板,前提是你得把clipboard属性设置成打开,打开以后用"+y命令把内容复制到和系统剪贴板关联的寄存器"+上。而y只是复制到默认无名寄存器""上。

  • 判断Vim是否支持系统剪贴板
hushow@hushow:~$ vim --version | grep clipboard
-clipboard         +jumplist          +persistent_undo   +vartabs
+eval              +mouse_gpm         +syntax            -xterm_clipboard

如果结果里找到+clipboard,恭喜你当前Vim支持系统剪贴板,如果开头的是-clipboard,说明你的vim不支持系统剪切板,需要先重新安装vim操作,如下:

linux:

sudo apt install vim-gtk

MacOS:

brew install vim

效果:

hushow@hushow:~$ vim --version | grep clipboard
+clipboard         +jumplist          +persistent_undo   +vartabs
+eval              +mouse_gpm         +syntax            +xterm_clipboard

+寄存器和系统剪贴板实例

注:命令行模式下执行以下命令

  • 复制当前行到系统剪贴板

    "+yy
  • 将系统剪贴板内容粘贴到当前位置

    "+p

命令说明:

命令 描述
"nyw 复制当前单词到 n 号剪切板(双引号开始)
"np 粘贴 n 号剪切板内容到当前位置后
"+Y 复制当前行到系统剪切板
"+nY 复制当前行往下 n 行到系统剪切板
"+p 粘贴系统剪切板内容到当前位置后

修改默认寄存器为为+寄存器

如果想偷懒用y直接把内容复制到系统剪贴板,需要到vim配置文件.vimrc里加一行属性。用下面命令开始配置,

vim ~/.vimrc
set clipboard=unnamed

现在你的y,d,x,p已经能和 ctrl-c和ctrl-v 一个效果,并且能互相混用。

相关文章

线上PostgreSQL锁表故障分析
PostgreSQL创建外部表场景及使用
navicat15 for linux桌面的破解激活
快速实现通用的办公文档在线预览方案
自建流媒体服务,快速打造自己的短视频点播平台
如何为项目构建高效的统一文件存储方案

评论(1)

发布评论