经典笑话:

Q: 如何生成随机字符串?
A: 让一个计算机新生退出 Vim

Vim 是一种广泛使用的文本编辑器,以其强大功能和高度可定制性而闻名。然而,它也因为其不直观的命令和操作模式而臭名昭著,特别是对于初学者来说。

笑话的幽默在于,Vim 的退出命令(通常是 :q!:wq)对于新手来说并不明显,可能会导致他们在尝试退出 Vim 时随机尝试各种命令组合。因此,这里的“生成随机字符串”实际上是在说新生在尝试退出 Vim 时可能会无意中输入一连串随机的键盘字符。

这个笑话体现了程序员社区中的一种幽默,通过夸张描述一个共同的困境来达到幽默效果。这样的笑话能够让处于不同水平的程序员产生共鸣,因为几乎每个使用 Vim 的人都可能在初次使用时面临过退出的挑战。

Vim 中的模式

image

  • 命令模式(Command mode)
    这是 Vim 启动后默认的模式。在这个模式下,你可以使用各种键盘快捷键来执行操作,如移动光标、删除文本、复制和粘贴文本等。这些命令通常都是单个字母,或者是字母的组合。例如:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    h, j, k, l:分别用来向左、向下、向上、向右移动光标。
    dd:删除当前行。
    yy:复制当前行。(2yy指复制两行内容)
    p:粘贴最近一次复制或删除的内容。(2p指粘贴两次)
    Ctrl+f : 向前翻页
    Ctrl+f : 向前翻页
    Ctrl+u : 向前翻半页
    Ctrl+d : 向前翻半页
    G: 跳转到文件最后一行(输入100G跳转到100行 等同于尾行模式输入:100)
    gg: 跳转到文件第一行
    /searchtext: 查找文本 (使用n继续向下查找) (查找的时候如果要忽略大小写使用/searchtext\c)
    /searchtext: 查找文本 (使用n继续向上查找) (查找的时候如果要忽略大小写使用/searchtext\c)
    u: 等同于windows中的CTRL+Z(撤销)
    ^: 行首
    $: 行尾
  • 插入模式(Insert mode)
    插入模式是用于输入文本的。在命令模式下,你可以通过一些特定的命令进入插入模式,如:

    1
    2
    3
    i:在当前光标位置前插入。
    a:在当前光标位置后插入。
    o:在当前行下方新开一行,并进入插入模式。

    这里大小写是有区分不同的功能的如图所示

    image

    当你处于插入模式时,可以直接输入文本,此时输入的任何内容都将直接添加到文本文件中。要返回命令模式,通常按 Esc

  • 尾行模式(Ex mode)
    尾行模式允许你输入在命令行中执行的命令,这些命令可以用于保存文件、设置选项、查找和替换文本等更复杂的操作。进入这个模式通常通过按 : 键(在命令模式下)。在命令行提示符出现后,你可以输入命令。例如:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    :w 保存文件。
    :q 退出 Vim。
    :wq 或 :x 保存文件并退出。
    :/pattern 查找文本模式。
    :%s/old/new/g 将文件中所有的“old”替换为“new”。(带g表示每一行全部匹配到的内容都替换,不带则指替换第一个)
    :1,9s/old/new/g 将文件中1-9行的“old”替换为“new”。
    :set number 或者 :set nu 设置显示行号
    :set nonumber 或者 set nonu 设置不显示行号
    :set ic 全局忽略大小写(set ignore case)

    完成命令输入后,按 Enter 键执行,再按 Esc 键回到命令模式。

  • 可视模式(Visual mode)

    • 这种模式允许用户选择文本块,然后可以对这些选定的文本执行命令,如复制、剪切和粘贴。
    • 可视模式有三种变体:
      • 可视模式(Visual mode):通过按v进入,可以选择连续的字符。
      • 可视行模式(Visual Line mode):通过按V(大写V)进入,可以选择整行。
      • 可视块模式(Visual Block mode):通过按Ctrl + v进入,可以选择一个矩形块。
  • 选择模式(Select mode)

    • 类似于其他文本编辑器中的选择操作,可以通过gh键进入。这种模式下,光标移动会扩展或减少选择的文本区域。
    • 当文本被选定后,继续输入会替换选定的文本(与Insert模式不同,Insert模式在选定文本的前面开始插入)。
  • 替换模式(Replace mode)

    • 通过按R进入,可以覆盖光标所到之处的字符,而不是像插入模式那样在它们之间插入。
    • 这在需要对现有文本进行修改时非常有用。
  • 操作等待模式(Operator-pending mode)

    • 这是一个比较特殊的模式,在执行需要一个运动命令(如删除、更改等)的操作符后进入。
    • 例如,当你输入d(删除)后,Vim等待你指定要删除的文本范围,此时Vim处于操作等待模式。

注: 还有一个比较重要的文件是.vimrc 这个文件相当于配置文件,可以在其中设置一些前置内容提前加载。

例如:快捷键/颜色/字体/插件/行号/忽略大小写等。

网站上传文件

1
2
3
4
5
6
7
8
9
10
11
12
#初始化
git init
#把根目录下file文件夹里的所有文件添加到暂存区
git add ./file/
#提交到本地仓库 m表示本次提交的信息
git commit ./file/ -m "updata"
#关联github远程仓库,其中url从仓库页面的SSH处获取
git remote add origin [url]
#与远程仓库进行代码合并,main是远程分支
git pull --rebase origin main
#上传本地代码
git push -u origin main

解决方案 A,如果你想把分支命名为 master:
运行 git push -u origin master 而不是 git push -u origin main

解决方案B ,如果你想把分支命名为main:
在git push -u origin main之前运行git checkout -B main