vi vim 末尾编辑按GA 在最后一行下方新增一行编辑按Go

vim 快速跳到文件末尾 在最后一行下方新增一行

移到末尾,并且进入文本录入模式 GA (大写G大写A)

在一般模式(刚进入的模式,esc模式)
GA Shift +ga
Gshift+g 到最后一行
然后 A shift+a 到本行末尾 并且进入文本录入模式

在最后一行下方新增一行 (光标换行,文字不换行) Go (大写G小写o)

在一般模式(刚进入的模式,esc模式)
Go Shift+g 然后 o
Gshift+g 到最后一行
然后 小写o 在该行下方新增一行

目录

  • vim 快速跳到文件末尾 在最后一行下方新增一行
    • 移到末尾,并且进入文本录入模式 `GA` (大写G大写A)
    • 在最后一行下方新增一行 (光标换行,文字不换行) `Go` (大写G小写o)
    • vi的多种工作模式
    • 移到末尾,并且进入文本录入模式
    • 在最后一行下方新增一行 (光标换行,文字不换行)
    • 扩展知识
      • 光标快速移动
        • 首行(第一行),尾行(最后一行开头)
        • 某行
        • 屏首,屏中,屏尾
        • 行首行尾
        • 上下左右
      • 新增行, 并进入文字录入模式
      • 复制剪切粘贴删除
        • 复制
          •   可视化选择复制或剪切
        • 粘贴
        • 删除
          • 删除,然后自动进入文字插入模式
          • 删除,停留在 ESC 模式
          • 删除行,删除整行
            • 删除当前整一行
            • 删除多行
      • 撤销(回退)(后退)重做(前进)
      • 查找替换
          • 查找
        • 替换
          • 限制在可视的选定区域进行替换
      • 保存退出
      • 行号
      • 其它
      • 动作后会进入文字输入编辑模式
          •   进入文字输入插入模式 INSERT模式
          •   进入文字输入覆盖替换模式 REPLACE模式
      • 解决Ubuntu22.04Desktop桌面版的vim的编辑模式下的上下左右变成ABCD
        • 解决办法1, 卸载重装vim
        • 解决办法2 , 修改 `/etc/vim/vimrc.tiny`

vi的多种工作模式

  1. 一般模式,刚进入vi的模式, esc模式,我觉得可叫快捷键模式(按键模式), 按esc的模式
  2. 文本输入模式(a , A , i , I , o , O , s , S ,C进入插入模式 R进入覆盖模式)
  3. 底部命令行模式(冒号:开头,/开头,?开头)
  4. 连续字符串选择可视模式(v)
  5. 块选择可是模式(ctrl+v)

移到末尾,并且进入文本录入模式

在一般模式(刚进入的模式,esc模式)
GA Shift +ga
Gshift+g 到最后一行
然后 A shift+a 到本行末尾 并且进入文本录入模式

在最后一行下方新增一行 (光标换行,文字不换行)

在一般模式(刚进入的模式,esc模式)
Go Shift+g 然后 o
Gshift+g 到最后一行
然后 小写o 在该行下方新增一行




扩展知识

vi vim 键盘图

光标快速移动


#### 文档首,文档尾 文档首 : `gg` 或 `1gg` 文档尾 : `G$` 或 `999999gg$` 或 `999999G$` (文档尾就是(尾行行尾)(末行行尾)(最后一行行尾)
首行(第一行),尾行(最后一行开头)

首航就是文档首: gg1gg1G

尾行就是末行行首(最后一行行首): G999999gg999999G:999999

到最后行是在 esc模式下 键盘大写时按G键 或 小写时按shift+g
到第一行是按两次小写g gg 或者 输入冒号:0冒号:1

  • gg:0:1 --------第一行的开头
  • G ----------------------------最后一行开头
    888G888gg:888 到第888行或尾行

某行

某行行首: 行号gg行号G冒号行号 , 如 1gg,2G,3gg,666G,888gg,:777,:999

  • 行号gg 如: 1gg , 3gg , 666gg ,
  • 行号G 如: 1G , 3G , 4G,5G,666G ,
  • 冒号行号 如: :0=:1 , :3 , :666 ,

冒号可以使用0,效果同1 , gg和G不能用0开头, 0开头直接起效到行首


屏首,屏中,屏尾

H屏首   M屏中   L屏尾

行首行尾
  • 当前行首: 0(零)
  • 当前行第一个字符: ^ (Shift+6)
  • 当前行尾: $ (Shift+4) 或 999999空格 或 9999999999
上下左右

数字右键=数字空格=数字小写l: 光标右移动数个字符
数字下键=数字回车: 光标下移数行
数字左键=数字小写h: 光标左移动数个字符
数字上键: 光标上移数行



新增行, 并进入文字录入模式

  • 在当前行下方新增一行并进入编辑模式, 用 o 小写
  • 在当前行上方新增一行并进入编辑模式, 用 O 大写

复制剪切粘贴删除

复制

yy=y1y=1yy 复制光标所在行
yyp=y1yp=1yyp 向下复制粘贴当前行
yyP=y1yP=1yyP 向上复制粘贴当前行

3yhy3h光标前三字符   3yly3l光标及后两字符
yy 本行   y0行首到光标   y^本行第一个字符到光标   y$光标到行尾
3yyy3y 本行和下两行
yw 光标 至 空格后出现字符

  可视化选择复制或剪切

有三种方法选择捕获

  • v 小写v 选连续文字, 首末行可不包括整行
  • V 大写V 选连续文字, 所有行都是整行
  • Ctrl+v 小写v, 块选,文字可不连续, 对角线方框片选

先将鼠标移到想要的开始位置,然后按v
然后就可以通过 上下左右 像鼠标按住左键那样选择
选好区域后按y复制,按dx剪切,p粘贴, cs删除


#### 剪切(删除) `d,D,x,X`是剪切,为 方便`p,P`粘贴,将保持在Esc模式 `c,C,s,S`纯删除,会进入编辑模式,

剪切的d语法如同复制的y语法
dd=d1d=1dd 剪切光标行,连同换行符一同剪切,本行消失
3dhd3h光标前三字符   3dld3l光标及后两字符
dd 本行   d0行首到光标   d^本行第一个字符到光标   d$光标到行尾
3ddd3d 本行和下两行

x 剪切光标字符
X 剪切光标前一个字符


粘贴

粘贴 分为 粘贴到光标前后粘贴到当前行上下

p 小写p粘贴到 光标后当前行下
P 大写P粘贴到 光标前当前行上

  • 当剪切板内容非整行时, 粘贴到光标前后
    当剪切板内容是整行时, 粘贴到当前行上下

  • 当用小写v选取片段时,粘贴到光标前后
    当用大写V选取整行多行时,粘贴到当前行上下 粘贴到光标前后

当使用y3hp9ylpy6hP,8ylP等非整行选取时,

当使用 yyP``或yyp等时, 不是在光标前后, 而是当前行上下
yyp=y1yp=1yyp是在行下方复制粘贴当前行,而不是光标后
yyP=y1yP=1yyP是在行下方复制粘贴当前行,而不是光标后
y3yp=3yyp是在行下方复制粘贴当前及下方3行,而不是光标后
y6yP=6yyP是在行下方复制粘贴当前及下方6行,而不是光标后


删除

c,C,s,S纯删除,会进入编辑模式,
d,D,x,X是剪切,为 方便p,P粘贴,将保持在Esc模式

删除,然后自动进入文字插入模式
  1. S 清空光标行 (大写S) , 保留换行符, 行还在,变成空行,
    S=cc=c1c=1cc

    s 删除光标字符 (小写s) , 删除一个字符

  2. C 删除光标到行尾 (大写C) , 连同光标字符到行尾都删除

    c (小写c)操作语法类似dy , 作用是删除, 如同d, 只是执行后会进入文字输入插入模式
    cc=c1c=1cc=S 清空光标行 , 保留换行符, 行还在, 变成了空行,
    3ch=c3h光标前三字符   3cl=c3l光标及后两字符
    c0行首到光标   c^本行第一个字符到光标   c$光标到行尾
    3ccc3c 本行和下两行
    C 光标到行末 (大写C)

删除,停留在 ESC 模式

d,D,x,X是剪切,有删除效果,并停留在ESC模式
dd=d1d=1dd 剪切(复制并删除)当前行, 行消失, 停留在ESC模式
小写x=1x~=约等于Delete: 删除光标字符, del键不是剪切,只删除,不复制
大写X=1X : 剪切左边一个字符, 回退键不会删除
小写88x剪切右边连同光标共88个字符
大写88X剪切光标左边(不含光标)88个字符

删除行,删除整行
删除当前整一行

删除当前整行的效果有:

  1. 连同换行符一起删除,行消失
  • cc=c1c=1cc=S 清空光标行 , 保留换行符, 行还在, 变成了空行,并进入插入编辑模式
  1. 保留换行符,行还在,变成空行,保留空行
  • dd=d1d=1dd 剪切(复制并删除)当前行, 行消失, 停留在ESC模式
删除多行

3S=c3c=3cc , 删除本行及下方2行,共3行 , 留一个空行,并进入插入编辑模式
c3↓=3c↓ , 删除本行及下方3行,共4行, 留一个空行,并进入插入编辑模式
c3↑=3c↑ , 删除本行及上方3行,共4行, 留一个空行,并进入插入编辑模式



撤销(回退)(后退)重做(前进)

u撤销(回退)(后退)

ctrl+r 重做 CTRL+r , 撤销撤销, 撤销回退, 撤销后退,前进



查找替换

查找

支持正则表达式
/pattern 向下查找pattern的匹配
?pattern 向上
n 下一个
N 上一个

替换

:s/a/b 本行第一个a变b
:s/a/b/g 本行所有a变b
:%s/a/b 所有行第一个a变b
:%s/a/b/g 所有行所有a变b , 整个文档的a变b

限制在可视的选定区域进行替换

用光标确定起始点, 然后v进入连续字符串选择, 或ctrl+v进入块选择
按冒号: , 底部出现 :'<,'>
:'<,'>后追加s/pattern/content/g 变成 :'<,'>s/pattern/conten/g
回车就能将pattern匹配到的内容替换



保存退出

:w----------------保存
:q----------------退出
:q! --------------强制退出
:wqZZ— 保存退出
:wq!------------ 强制保存退出



行号

:set nu 显示行号 :set nonu 关闭行号



其它

. 重复上一个动作 (点)
n空格键 光标移到n个字符后
n回车键 光标下移n行



动作后会进入文字输入编辑模式

分两种: insert插入模式 / replace覆盖模式
a和i都是进入插入模式, 不要觉得i是insert就迷惑a是不是覆盖 , i是光标前insert, a是光标后insert , append追加不是覆盖

  进入文字输入插入模式 INSERT模式
  1. a 光标后插入
  2. i 光标前插入
    I 光标移到本行第一个字符后开始插入
  3. O 光标上方插入一行
    o 光标下方插入一行
  4. S 删除本行
    s 删除光标字符
  5. C 删除光标到行尾
    c 小c操作语法类似dy , 作用是删除, 如同d, 只是执行后会进入文字输入插入模式,并保留空行, d是剪切
  6. 3chc3h光标前三字符   3clc3l光标及后两字符
    cc 本行   c0行首到光标   c^本行第一个字符到光标   c$光标到行尾
    3ccc3c 本行和下两行
  7. R进入覆盖模式,然后按键盘insert按键
  进入文字输入覆盖替换模式 REPLACE模式
  1. 在插入模式下按insert按键
  2. R 直接进入覆盖模式 (小写r接字符只替换光标处一个字符,替换后依旧在一般模式)




解决Ubuntu22.04Desktop桌面版的vim的编辑模式下的上下左右变成ABCD

Ubuntu22.04Desktop桌面版的vim的编辑模式下的上下左右变成ABCD , 退格键也失效

解决办法1, 卸载重装vim
sudo apt remove vim
sudo apt install -y vim
解决办法2 , 修改 /etc/vim/vimrc.tiny
  1. 将 兼容模式 改为 不兼容模式
    set compatible 改为 set nocompatible , 或加到后面
  2. 加入一条 set backspace=2
set nocompatible
set backspace=2

暂时没法用vi,vim , 可以用 nano 或 gedit 修改

远程用

sudo nano /etc/vim/vimrc.tiny

本机用

sudo gedit /etc/vim/vimrc.tiny

原先的 /etc/vim/vimrc.tiny

" Vim configuration file, in effect when invoked as "vi". The aim of this
" configuration file is to provide a Vim environment as compatible with the
" original vi as possible. Note that ~/.vimrc configuration files as other
" configuration files in the runtimepath are still sourced.
" When Vim is invoked differently ("vim", "view", "evim", ...) this file is
" _not_ sourced; /etc/vim/vimrc and/or /etc/vim/gvimrc are." Debian system-wide default configuration Vim
set runtimepath=~/.vim,/var/lib/vim/addons,/usr/share/vim/vimfiles,/usr/share/vim/vim82,/usr/share/vim>
set compatible" vim: set ft=vim:

修改后的 /etc/vim/vimrc.tiny

" Vim configuration file, in effect when invoked as "vi". The aim of this
" configuration file is to provide a Vim environment as compatible with the
" original vi as possible. Note that ~/.vimrc configuration files as other
" configuration files in the runtimepath are still sourced.
" When Vim is invoked differently ("vim", "view", "evim", ...) this file is
" _not_ sourced; /etc/vim/vimrc and/or /etc/vim/gvimrc are." Debian system-wide default configuration Vim
set runtimepath=~/.vim,/var/lib/vim/addons,/usr/share/vim/vimfiles,/usr/share/vim/vim82,/usr/share/vim>set nocompatible
set backspace=2" vim: set ft=vim:

用脚本修改

echo '" Vim configuration file, in effect when invoked as "vi". The aim of this
" configuration file is to provide a Vim environment as compatible with the
" original vi as possible. Note that ~/.vimrc configuration files as other
" configuration files in the runtimepath are still sourced.
" When Vim is invoked differently ("vim", "view", "evim", ...) this file is
" _not_ sourced; /etc/vim/vimrc and/or /etc/vim/gvimrc are." Debian system-wide default configuration Vim
set runtimepath=~/.vim,/var/lib/vim/addons,/usr/share/vim/vimfiles,/usr/share/vim/vim82,/usr/share/vim>set nocompatible
set backspace=2" vim: set ft=vim:' | sudo tee /etc/vim/vimrc.tiny

或者

sudo sed -ie 's/compatible/nocompatible\nset backspace=2/'  /etc/vim/vimrc.tiny

查看并试验vim的上下左右

sudo vi /etc/vim/vimrc.tiny

还原

echo '" Vim configuration file, in effect when invoked as "vi". The aim of this
" configuration file is to provide a Vim environment as compatible with the
" original vi as possible. Note that ~/.vimrc configuration files as other
" configuration files in the runtimepath are still sourced.
" When Vim is invoked differently ("vim", "view", "evim", ...) this file is
" _not_ sourced; /etc/vim/vimrc and/or /etc/vim/gvimrc are." Debian system-wide default configuration Vim
set runtimepath=~/.vim,/var/lib/vim/addons,/usr/share/vim/vimfiles,/usr/share/vim/vim82,/usr/share/vim>
set compatible" vim: set ft=vim:' | sudo tee /etc/vim/vimrc.tiny

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/181110.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蓝桥杯官网填空题(方格填数)

题目描述 本题为填空题&#xff0c;只需要算出结果后&#xff0c;在代码中使用输出语句将所填结果输出即可。 在 2 行 5 列的格子中填入 1 到 10 的数字。 要求&#xff1a; 相邻的格子中的数&#xff0c;右边的大于左边的&#xff0c;下边的大于上边的。 如下图所示的 …

“一键批量拆分HTML文本,高效整理文件,提升工作效率“

您是否曾经被大量的HTML文本文件困扰&#xff0c;难以找到所需的特定信息&#xff1f;现在&#xff0c;我们向您推荐一款强大的工具&#xff0c;它能够一键拆分HTML文本&#xff0c;让您轻松实现文件整理&#xff0c;提高工作效率&#xff01; 首先&#xff0c;在首助编辑高手…

CANoe新建XML自动化Test Modules

文章目录 1.打开Test Modules2.新建Environment3.新建XML Test Modules4.新建.can文件5.打开XML Test Modules6.新建xml脚本并保存7.编译8.在.can文件写个测试用例9.修改报告格式为HTML10.运行查看报告后面介绍的文章会重复用到这部分,这里单独介绍下,后面不做重复介绍。 1.…

python-在系统托盘显示CPU使用率和内存使用率

一、添加轮子 1.添加托盘区图标库 infi.systray from infi.systray import SysTrayIcon 2.添加图像处理库 Pillow from PIL import Image, ImageDraw, ImageFont 3.添加 psutil 来获取CPU、内存信息 import psutil 二、完整代码 from infi.systray import SysTrayIcon …

使用vue3+vite+elctron构建小项目介绍Electron进程间通信

进程间通信 (IPC) 是在 Electron 中构建功能丰富的桌面应用程序的关键部分之一。 由于主进程和渲染器进程在 Electron 的进程模型具有不同的职责&#xff0c;因此 IPC 是执行许多常见任务的唯一方法&#xff0c;例如从 UI 调用原生 API 或从原生菜单触发 Web 内容的更改。 在 …

如何写复盘报告

复盘报告在it公司中是为了在出现事情后&#xff0c;我们更好的回顾事情的前因后果&#xff0c;定位问题&#xff0c;指定解决措施&#xff0c;并且宣导&#xff0c;让这类事情减少发生的概率。那复盘报告一般怎样写合适呢&#xff1f;下来我们就看看&#xff0c; 一、一般会先…

标签识别中的数据泄露:关键分析

一、介绍 在数据驱动的决策时代&#xff0c;收集、处理和分析数据的过程在从医疗保健到金融&#xff0c;从营销到研究的各个领域都发挥着举足轻重的作用。数据分析的基本步骤之一是正确识别数据集中的标签或类别。然而&#xff0c;这项看似简单的任务可能充满挑战&#xff0c;尤…

zip文件解压缩命令全

zip文件解压缩命令全 入门Zip 用法选项示例语法形式和选项基本语法压缩目录将文件添加到现有压缩文件解压缩文件将 zip 文件解压缩到指定目录列出 zip 文件中的内容将 zip 文件加密将 zip 文件解密将 zip 文件中的文件转成 UTF-8 编码Zip 压缩示例创建新的 zip 压缩文件将文件添…

web前端——HTML+CSS实现奥运五环

web前端——HTMLCSS实现奥运五环 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</titl…

Mac安装DBeaver

目录 一、DBeaver Mac版软件简介 二、下载地址 三、DBeaver连接失败报错 3.1 问题描述 3.2 连接失败问题解决 一、DBeaver Mac版软件简介 DBeaver Mac版是一款专门为开发人员和数据库管理员设计的免费开源通用数据库工具。软件的易用性是它的宗旨&#xff0c;是经过精心设计…

2023 年最值得推荐的 10 款 iPhone 数据恢复软件

iPhone 从来都不是一个简单的打电话电话。它就像一台微型电脑&#xff0c;让我们互相联系、拍照、拍视频、发邮件、看文档、看书。然而&#xff0c;随着它成为日常生活的必需品&#xff0c;我们总是容易因各种原因丢失数据&#xff0c;如删除、恢复出厂设置、iOS 错误、文件同步…

单片机温湿度-光照-DHT11-烟雾气体检测控制系统-proteus仿真-源程序

一、系统方案 本设计采用52单片机作为主控器&#xff0c;液晶1602显示&#xff0c;DHT11温湿度&#xff0c;光照、烟雾气体检测&#xff0c;按键设置报警阀值&#xff0c;蜂鸣器报警。 二、硬件设计 原理图如下&#xff1a; 三、单片机软件设计 1、首先是系统初始化 // // …

C/C++输出字符菱形 2021年3月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析

目录 C/C输出字符菱形 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 C/C输出字符菱形 2021年3月 C/C编程等级考试一级编程题 一、题目要求 1、编程实现 给定一个字符&#xff0c;用它构造一个对角线长…

循环语句--JAVA

循环语句 for循环结构 范例 执行流程 while循环结构 格式 范例 流程 for和while的区别 条件控制语句所控制的自增变量,在for循环结束后,就不可以继续使用了 条件控制语句所控制的自增变量,在while循环结束后,还可以继续使用了 数据类型 基本数据类型 char byte boolean …

register_parameter和register_buffer 详解

在参考yolo系列代码或其他开源代码&#xff0c;经常看到register_buffer和 register_parameter的使用&#xff0c;接下来将详细对他们进行介绍。 1. 前沿 在搭建网络时&#xff0c;我们 自定义的参数&#xff0c;往往不会保存到模型权重文件中&#xff0c;或者成为模型可学习…

操作系统复习(2)进程管理

一、概述 1.1程序的顺序执行 一个具有独立功能的程序独占CPU运行&#xff0c;直至得到最终结果的过程称为程序的顺序执行。 程序的并发执行所表现出的特性说明两个问题 ⑴ 程序和计算机执行程序的活动不再一一对应 ⑵ 并发程序间存在相互制约关系&#xff08;要求共享信息&…

docker-compose 简单部署MySQL Database

docker-compose 简单部署MySQL Database 本博文部署MySQL 并与上篇部署的 Flask进行关联 主博客目录&#xff1a;《从零开始学习搭建量化平台笔记》 文章目录 docker-compose 简单部署MySQL Database部署 MySQLMySQL 开放端口与权限 主项目计划需要搭建一个MySQL 数据库为其他部…

python 深度学习 解决遇到的报错问题8

本篇继python 深度学习 解决遇到的报错问题7-CSDN博客 目录 一、OSError: [WinError 127] 找不到指定的程序。 Error loading "D:\my_ruanjian\conda-myenvs\deeplearning\lib\site-packages\torch\lib\caffe2_detectron_ops.dll" or one of its dependencies. 二、…

COCOS2DX3.17.2 Android升级targetSDK30问题解决方案

一、luajit不兼容问题 不兼容版本&#xff1a;【2.1.0-bate2、2.1.0-bate3都存在异常】 出问题系统&#xff1a;Android11&#xff1b;Android10的系统部分机型有问题&#xff0c;部分机型正常 异常点1&#xff1a;c调用lua接口&#xff0c;pushObjiect的时候crash 异常点2…

从Spring说起

一. Spring是什么 在前面的博文中,我们学会了SpringMVC的使用,可以完成一些基本功能的开发了,但是铁子们肯定有很多问题,下面来从Spring开始介绍,第一个问题,什么是Spring? Spring是包含了众多工具方法的IOC容器. Spring有两个核心思想--IOC和AOP,本章先来讲解IOC...... 1.1…