1837 words
9 minutes
vim nvim helix cmds
2024-04-02

Vim的相关操作#

Vim的操作模式:#

  • 正常模式:在文本中四处移动光标进行修改
  • 插入模式:插入文本
  • 替换模式:替换文本
  • 可视化(一般,行,块)模式:选中文本块
  • 命令模式:用于执行命令

在默认设置下,Vim会在左下角显示当前的模式。Vim启动时的默认模式是正常模式。

你可以按下<ESC>从任何其它模式返回正常模式。在正常模式,键入i进入插入模式,R进入替换模式,v进入可视(一般)模式,V进入可视(行)模式,^v进入可视(块)模式,:进入命令模式。

缓存,标签页,窗口#

Vim会维护一系列打开的文件,成为“缓存”。一个Vim会话包含一系列标签页,每个标签页包含一系列窗口(分割面板)。每个窗口显示一个缓存。跟网页浏览器等其它程序不一样,缓存和窗口不是一一对应的关系;窗口只是视角。一个缓存可以在多个窗口打开,甚至在同一个标签页内的多个窗口打开。

  • 组合键^w+s会上下分割当前打开的文件。
  • :sp <filename>会上下分割当前文件和新打开的文件
  • 组合键^w+v会左右分割当前打开的文件。
  • :vsp <filename>会左右分割当前打开的文件和新打开的文件
  • ^w+h 将当前光标定位到左边的屏幕。
  • ^w+l 将当前光标定位到右边的屏幕。
  • ^w+j 将当前光标移动到下面的屏幕。
  • ^w+k 将当前光标移动到上面的屏幕。
  • ^w+H 将当前的分屏移动到左边。
  • ^w+L 将当前的分屏移动到右边。
  • ^w+J 将当前的分屏移动到下边。
  • ^w+K 将当前的分屏移动到上边。
  • ^w+c 关闭当前的分屏。
  • ^w+q 关闭当前的分屏,如果是最后一个则将退出Vim。

Vim的退出#

  • :w 保存当前对文件的修改,但是不退出文件
  • :w! 强制保存但是不退出文件
  • :w <file> 保存当前的文件修改到文件当中。
  • :q! 退出文件,对文件的修改不做保存。
  • qa! 退出所有的文件,并且不保存。
  • :wq 保存并退出。
  • :e <file> 打开文件。
  • :e! 放弃对文件的所有修改,恢复文件到上次保存的位置。
  • :saveas <file> 另存为
  • :bn:bp 当打开多个文件的时候可以进行上一个文件或者下一个文件的切换。

Vim的插入#

  • i 是在光标所在的字符之前插入需要录入的文本。
  • I 是在光标所在的行首插入需要录入的文本。
  • a 是在光标所在的字符之后插入需要录入的文本。
  • A 是在光标所在的行末插入需要录入的文本。
  • s 是删除光标所在处的字符然后插入文本。
  • S 是删除光标所在行,在当前行的行首插入文本。

Vim的命令模式#

行号#

  • :set nu 显示行号。
  • :set nonu 不显示行号。
  • :<n> 定位到第
  • :<n>,<m><cmd> 对第n到第m行执行操作,如删除就是:<n>,<m>d,复制就是<n>,<m>y

关键字查找#

  • /{目标字符串} 查找文本中匹配的目标字符串,查到以后按n会去寻找下一个匹配,N会去寻找上一个匹配。

删除#

  • 在命令模式下dd会删除本行。
  • :<n1>,<n2>d 从第行一直删除到行(两边都闭区间)

Vim处理文本替换#

  • :{作用范围}s/{目标}/{替换}/{替换的标志},其中作用范围分为当前行、全文、选区等。
  • 例如:
    • :s/zempty/handsome/g 将会把当前光标所在行的zempty替换成handsome
    • %s/zempty/handsome/g 将会把全文中的zempty替换成handsome
    • <n1>,<n2>s/zempty/handsome/g行到行的所有zempty替换为handsome。
  • 替换标志中,g代表global全局替换,空替换只替换从光标位置开始的第一次,i表示大小写不敏感,I表示大小写敏感,c表示需要确认。

Vim执行Linux命令#

:!<command> 将执行命令

Vim的正常模式#

  • h,j,k,l分别代表左右下上。
  • 在当前行上移动光标
    • 0 移动到行头
    • ^ 移动到本行的第一个不是blank的字符
    • $ 移动到行尾
    • g_ 移动到本行最后一个不是blank字符的位置
    • w 光标移动到下一个单词的开头
    • e 光标移动到下一个单词的结尾
    • f<c> 光标移动到本行下一个为的字符处
  • 跨行移动光标
    • nG 光标定位到第N行行首
    • gg 光标定位到第一行的行首
    • G 光标定位到最后一行的行首
    • H 光标定位到最后一行的行首

Vim的基础文本操作#

  • 删除
    • d就是删除的意思
    • dw 删除一个单词
    • d<n>w 删除个单词
    • dd 删除整行
    • <n>dd 删除光标处开始的
    • d$ 删除光标到本行的借位
    • dH 删除屏幕显示的第一行文本到光标所在
    • dG 删除光标所在行到文本结束
  • 复制
    • y就是复制的意思
    • yw 复制一个单词
    • yy 复制整行
  • 粘贴
    • p 就是粘贴的意思,在光标后粘贴
    • P 在光标前粘贴
  • 撤销
    • u 撤销刚才的操作
    • ^r 恢复撤销操作
  • 删除字符串操作和替换
    • x 删除光标当前所在的字符
    • r 替换光标当前所在的字符

neovim+LazyVim#

从normal进入insert模式#

  • i: 在当前光标左边插入字符
  • a: 在当前光标右边插入字符
  • I: 在当前光标所在行的行首插入字符
  • A: 在当前光标所在行的行末插入字符
  • o: 在当前行所在的下一行插入字符
  • O: 在当前行所在的上一行插入字符

进入visual模式#

visual模式是为了一次性选中多行的

command模式#

按下冒号就进入了命令模式。在命令模式中,按下命令的开头字母之后,按tab会出现补全。当有多个补全候选的时候,继续按tab向下选择,shift+tab向上选择

z模式#

z模式本质上就是跳转模式的一个若干快捷键的集合。比如zt就是把当前光标所在行移动到屏幕顶部。zb就是把当前光标所在行移动到屏幕底部。zz是把当前光标所在行移动到屏幕中间。

词间移动#

  • e: 移动到下一个单词的最后一个字母
  • w: 移动到下一个单词的第一个字母
  • b: 移动到前一个单词的第一个字母
  • 以上三个指令都可以先带上数字,一次性跳过多个单词

Helix-editor#

motivation#

在香橙派上安装了lazyvim以后,发现lazyvim的LSP配置有问题。我明明是arm架构,却被下了一个不适配的clangd。

刚好了解到helix,是用rust编写,并且是toml的配置文件,非常适合。哪怕是源码编译也具有很高的可复现性。但是快捷键和vim系不太一样。

vim nvim helix cmds
https://blog.cassiusblack.top/posts/vim-nvim-helix-cmds/
Author
Cassius Black
Published at
2024-04-02
License
CC BY-NC-SA 4.0