目录

vi命令学习

这篇文章是我之前学习vi系列视频做的笔记,比较抽象。但看到记录,是能够想起来怎么操作的。vim还是十分强大的;记住常用的即可。后面如果用的比较多,可以去看视频,视频保存在nas里了。注意要有备份意识,修改任何重要文件前,要想到提前备份

1、vi命令简介

vi是Linux中最经典的文本编辑器,没有图形界面,没有鼠标操作,没有菜单,只有命令,让程序员始终把手放在键盘中心部位,快速定位行数,删除,复制等操作。vim 是vi的升级版,这两个差不多,vim看到的有颜色,五颜六色的,有的操作只在vim下有用。实操起来还是很有意思的,不需要全部记住,记住常用的操作,在实操中体验vi命令的使用方法。

2、打开文件

有就打开,没有就创建

1
vi 文件名

退出 q!,强制保存wq!

3、批量复制某一行

  • 鼠标放在要复制的行首,esc退出编辑模式,按yy,19p,就复制了19行!
  • u 撤销,u再撤销
  • 按yy,p是只复制一行
  • ctrl+r是撤销刚撤销的操作

4、打开时定位到行数

1
2
3
vi 003.py +3 # 这样可以直接定位到第三行!可以帮我们迅速排除错误
vi 003.py +  # 定位到末尾,继续开发工作
vi 003.py    # 定位到开始

或者是vi 打开后。直接俄输入:n (行数),定位到这一行。这个操作很重要!在报错给到某一行的时候,需要vi打开文件,定位到这一行。文件很大如果不会定位,按上下键滚动,那得花多长时间

5、多窗口同时打开文件

两个终端窗口都打开同一个文件,会出现下面提示

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
E325: ATTENTION
Found a swap file by the name ".001.py.swp"
          owned by: root   dated: Wed Jan  5 23:13:27 2022
         file name: ~root/001.py
          modified: no
         user name: root   host name: os14
        process ID: 1302817 (still running)
While opening file "001.py"
             dated: Wed Jan  5 23:05:47 2022

(1) Another program may be editing the same file.  If this is the case,
    be careful not to end up with two different instances of the same
    file when making changes.  Quit, or continue with caution.
(2) An edit session for this file crashed.
    If this is the case, use ":recover" or "vim -r 001.py"
    to recover the changes (see ":help recovery").
    If you did this already, delete the swap file ".001.py.swp"
    to avoid this message.
  • d 是删除交换文件
  • e 是直接编辑
  • o 是以只读方式打开
  • q 是退出

6、三种模式

  1. 命令模式(入口): vi 打开就进入这种模式,定位代码,浏览代码,复制代码,删除等
  2. 编辑模式: insert 进入,按住esc进入命令模式
  3. 末行模式(出口): 保存或退出文件等操作,输入: 进入末行模式

7、末行模式命令

这种模式下命令不多,很好记。

  • w 保存
  • q 退出 (不保存不允许退出,一般与wq结合使用)
  • q!强制退出
  • x 等价wq, 保存并退出。
  • wq!

8、命令模式下命令

8.1 上下左右移动光标

  • h 左
  • l 右
  • j 下
  • k 上

8.2 行内移动

  • w 向后移动 一个单词,如果没单词也会上下走的 word
  • b 向前移动一个单词 back
  • 0 行首
  • ^ 行首
  • $ 行尾

8.3 行数移动go

  • gg 文件顶部
  • G 文件末尾(shift+g)
  • 移动到数字对应行数
    • ngg
    • nG
    • :n

8.4 屏幕移动

  • ctr+b 向上翻页
  • ctr+f 向下翻页
  • H 屏幕顶部
  • M 屏幕中间
  • L 屏幕底部

8.5 段落跳转

  • { 向上段切换
  • } 向下段切换

8.6 括号

  • % 在成对的括号内来回跳转

8.7 标记

  • m[a-z] 做标记
  • ‘[a-z] 调到标记的地方

很少用,了解即可

8.8 选中文本

  • v 可视模式,
  • V 可视行模式,选中光标经过的文本
  • ctr+v 可视块模式,垂直方向选中文本

esc退出,例如ggVG是选中所有内容

8.9 撤销与恢复撤销

  • u (undo) 撤销上次的命令,可以一直撤销撤销撤销
  • ctrl+r (redo)恢复撤销的命令

8.10 删除

  • x 删除光标所在字符,默认删除一个
    • 3x,删除三个
    • v模式下,按%,再按x删除
  • dd 删除光标所在行
  • D 删除到行尾,一般用上面那个就可了
  • dw 从光标位置删除到单词末尾
  • d0 从光标位置删除到行开头
  • d} 从光标位置删除到段落结尾
  • ndd 删除n行
  • d’a 删除从光标位置到标记的地方之间的内容
  • dG 删除当前后面的全部内容(直接在vi编辑中按下字母dG即删除当前行及后面所有内容)

8.11 复制和粘贴

  • yy 复制一行(copy)
  • y 复制 类似ctr+c
  • p 粘贴 类似ctr+v
  • yy np,这个很常用!

一般批量修改时在编辑模式下,用鼠标复制粘贴方便些

8.12 替换命令

  • r 替换当前光标字符,当需要替换单个字符时很方便
  • R 替换当前光标之后的字符

8.13 缩排及重复执行

  • > > 向右增加缩进,四个空格,可视模式下,只需要一个就可以

  • « 向左减少缩进,四个空格, 可视模式下,只需要一个就可以

  • . 重复上次命令

8.14 查找字符

这个倒是经常用

  • /str
    • n 向后查找str
    • N 向前查找str
  • - 向后查找当前光标所在单词
  • # 向前查找当前光标所在单词

8.15 替换

  • 全局替换 输入:到末行模式
1
2
%s///g
%s/旧文本/新文本/g
  • 可视区替换

v或V,下移选中,然后输入下面,注意可视模式下输入: 后会有一对尖括号,这个不要删。

1
s/旧文本/新文本/g
  • 确认替换,这个一般不怎么用,交互式的,有用处。常用的是上面两个,一个一个替换很麻烦
1
%s/旧文本/新文本/gc

9、插入命令

插入命令不止只有i

  • o 在当前行后插入一行
  • O 在当前行前插入一行
  • a 在当前字符后插入字符
  • A 行尾插入
  • i 在当前字符前插入字符
  • I 行首插入

10、连续输入10个*

  1. 命令模式下输入10
  2. i进入编辑模式,输入*
  3. esc进入命令模式,可以看到增加了10个*

注意正式开发时,进入编辑模式前,不要输入任何数字

11、多行注释

  • 添加多行注释,这个在vi没成功,在vim下成功了
    • Ctrl+v进入VISUAL BLOCK(可视块)模式,按 j (向下选取列)或者 k (向上选取列)
    • 按Shift + I 进入编辑模式,输入你想要插入的字符(任意字符)
    • 按两次Esc就可以实现批量插入字符,不仅仅实现批量注释而已。
  • 取消注释
    • Ctrl+v进入VISUAL BLOCK(可视块)模式,按 j (向下选取列)或者 k (向上选取列)
    • 按 x 或者 d 批量删除字符

vi 批量注释和解注释

12、末行命令扩展

vim 下试过可以,这些一般不常用,了解下就好

  • :e . 会打开内置文件浏览器,浏览当前目录下文件
  • :n 文件名, 新建文件,会切换到新文件
  • :w 文件名,另存为,但不退出当前编辑文件。在代码备份方面很有用,备份不同的版本

13、分屏

分屏主要是为了同时编辑和查看多个文件,一般不用,除非很熟练,不然很容易乱和弄混。

  • :sp filename 横向增加分屏
  • :vsp filename 纵向增加分屏,ctr+w
    • w 切换到下一个窗口
    • r 互换窗口
    • c 关闭当前窗口,但不能关闭最后一个窗口
    • q 退出当前窗口
    • o 退出其他窗口