vim 删除当前词_Vim 高级使用技巧汇总

e9241d59-5531-eb11-8da9-e4434bdf6706.png

引言

本文默认你已经知道vim的三种模式,并且会模式切换,会基本操作,知道:wq是什么意思。

Vim不装任何插件的情况下,仍拥有非常多的快捷键,记忆起来挺困难的,这里进行常用快捷键汇总,并在括号中提供一些帮助记忆的单词和方法。

你可能会说,已经有其他vim教程了,为何还要写?不瞒各位,看过一些中文的vim教程,不否认有少数人写的挺好,但大多中文教程逻辑混乱,错误繁多,实在是不堪入目。一些英文教程非常好,但读起来略微费力。

使用vim,最多的情况是登录远程服务器,需要修改配置文件或者简单修改代码,因此本文也是以此为立足点编写。有些大佬是使用vim作为日常写代码的编辑器,免不了需要安装各种插件,进行繁琐的配置,对vim进行这种用法的也请绕道,您已经是大佬,本文的内容对您来说可能过于浅显。

话不多说,我们正式开始:

我们知道vim命令大体分为两种:action和motion,先来看看移动(motion)

光标移动

上下左右很多人依然用光标键,但vim推荐用hjkl,能够更高效移动光标。

基本动作

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

其他移动

  • gg:文档顶部
  • G:文件底部或行号(如果在G前面放置数字)
  • w:下一个单词(word)
  • e:单词尾(end)
  • 0:行首(第0个字符)
  • $:行尾(类似正则表达式语法)

前述已经有许多移动命令,一般的初学者都已经知道了。但是,我们也可以通过其他方式引导移动

我们可以使用以下命令将光标移动到页面当前可见部分的不同区域:

  • H:将光标移动到当前可见页面的顶部(High)
  • M:将光标移到当前可见页面的中间(Middle)
  • L:将光标移动到当前可见页面的底部(Low)

如果要移动页面而不是光标(注意是页面动,光标不随页面动),则可以使用以下命令:

  • CTRL-D:向下翻页(Down)
  • CTRL-U:向上翻页(Up)
  • CTRL-E:向下滚动一行
  • CTRL-Y:向上滚动一行

我们还可以按句子、段落进行导航。如果您键入常规文本而不是代码,这将很有用。这些类似于单词和行导航命令。

  • ):移至下一个句子的开头
  • (:移至上一句的开头
  • }:移至下一个段落的开头(以空白行分隔)
  • {:移至下一段的开头(以空白行分隔)

同时打开多个文件

通常,在工作时,无论是写软件项目文档上还是大作业论文(没错,可以使用vim写论文),您都希望能够一次打开多个文档。根据您的工作方式,Vim有几种不同的实现方法。

如何管理缓冲区

一种管理多个文件的方法是通过buffers。缓冲区通常代表打开供编辑的文件。它们基本上是vim当前已打开并且可以轻松访问的所有内容。

我们使用vim打开多个文件,如下所示:

vim file1 file2 file3

每个文件都在自己的缓冲区中打开。目前,我们只能看到第一个文件。

通过输入,我们可以看到可用的缓冲区:buffers

:buffers
:buffers
  1 %a  "file1"             line 1
  2     "file2"             line 0
  3     "file3"             line 0
Press ENTER or type command to continue

如果我们希望进入下一个缓冲区,可以键入:bn。这将更改为下一个缓冲区。类似地,我们可以通过键入b数字或名称(在上面的第一列)或名称来切换到缓冲区。即使文件名不完整,也可以使用。

以下是一些管理缓冲区的命令:

eb241d59-5531-eb11-8da9-e4434bdf6706.png

如何管理窗口

vim分别管理多个文件的控制机制是基于windowsviews的概念。这使您可以将当前编辑区域划分为不同的窗口,以便可以同时查看多个缓冲区。

要将当前工作空间拆分为单独的窗口,可以键入:split:sp。这将在当前窗口上方打开一个新窗口,并将光标更改到该窗口。您可以使用上面显示的buffer命令更改至新窗口中显示的缓冲区。

以下是一些我们可以用来创建和管理窗口的命令:

  • :sp:将当前窗口水平一分为二。最初,每个窗口将显示相同的缓冲区。(split)
  • 在“ sp”之前加上数字以设置新窗口的高度。
  • :vs:垂直拆分当前窗口。最初,每个窗口将显示相同的缓冲区。(vertical split)
  • 在“ vs”之前加上数字以设置新的窗口宽度。
  • CTRL-ww:将光标切换到下一个窗口(window)
  • CTRL-w(移动):将焦点沿指示的方向(h,j,k,l)更改到指定窗口
  • CTRL-wc:关闭当前窗口(close)
  • CTRL-w+:增加当前窗口的大小
  • CTRL-w-:减小当前窗口的大小
  • CTRL-w=:将所有窗口设置为相等大小
  • #CTRL-w_:将高度设置为前面的“#”指示的大小
  • :only:关闭当前窗口以外的所有窗口
  • CTRL-wn:使用新缓冲区打开新窗口(new)

如何管理标签

在vim中管理多个文档的第三个概念是tabs。与许多程序不同,在vim中,选项卡可以包含窗口,而不能相反。选项卡可以包含窗口,这些窗口充当缓冲区的视口。

我们可以分别管理每个选项卡的窗口布局。要创建标签,我们可以使用:tabnew命令打开一个新标签。

一些简单的选项卡管理方法是:

  • :tabnew:打开新标签
  • :tabclose:关闭当前标签页
  • :tabn:切换到下一个标签(next)
  • gt:切换到下一个标签
  • :tabp:切换到上一个标签
  • gT:切换到上一个标签
  • :tab ball:在单个选项卡中打开所有缓冲区
  • :tabs:列出所有可用的标签

随着缓冲区,窗口和选项卡的混排,有时会混淆您当前正在查看的文件。查找当前正在查看的文件名的快速方法是键入:

  • CTRL-g:显示当前文件名

针对不同文档的小技巧

根据您要处理的文档类型,vim具有相应功能可以为您提供帮助。

纯文本

如果要编辑纯文本文档,vim可以通过多种方式为您提供帮助。此功能必不可少的功能之一是拼写检查。

要在vim中打开拼写检查,可以输入:

:set spell

要设置使用的语言,您可以输入:

:set spelllang=[language abbreviation]

现在,针对英文文本文档,将检查您的文档的拼写。波浪线将出现在拼写错误的单词下方。这就是您的使用方式。

要在拼写错误的单词之间来回跳转,请输入:

]s    # Jump to next mistake
[s    # Jump to previous mistake

将光标移到拼写错误的单词上方后,您可以通过输入以下内容查看拼写建议:

z=

这将为您提供可能的匹配项列表。您可以通过选择关联的数字来选择所需的选项,或者可以按Enter键以保持单词原样不变。

如果您想将单词标记为非拼写错误,可以将其添加到拼写列表之一。Vim维护两个拼写列表,一个常规列表;另一个是临时列表,将仅用于当前会话。

要将单词添加到“好”单词列表中,请使用以下命令之一:

zg    # Adds word to regular dictionary
zG    # Adds word to the current session dictionary

如果您不小心添加了一个单词,则可以通过转到该单词并键入以下内容来将其删除:

zug   # Remove word from regular dictionary
zuG   # Remove word from the current session dictionary

如果您发现自己不得不经常输入长词组的短语,则可以添加缩写。

如果我们键入:ab后跟一个缩写词和一个全名,则每当我们键入一个缩写词和一个空格后,vim都会输入全名。

例如,如果我们遵循Richard Stallman的示例使用“ GNU/Linux”替换“ Linux”的这个词,那么我们可以创建一个自动执行的缩写:

:ab Linux GNU/Linux

现在,当我们键入“ Linux”时,vim将自动替换为“ GNU / Linux”。

Linux is an operating system.

更改为:

GNU/Linux is an operating system.

但是,如果发现全文专门谈论内核,那么只有Linux这个词是合适的,我们可以在键入空格之前通过键入CTRL-V来取消扩展。

GNU/Linux is an operating system with Linux(CTRL-V) as a kernel.

如果我们不再希望使用此缩写,则可以使用以下命令将其删除:

:una Linux

现在我们的“ Linux”将仍然是“ Linux”。


您可能需要不时做的另一件事是插入传统qwerty键盘上没有的字符。我们称这些为“特殊字符”。您可以通过输入以下内容来查看vim的特殊字符集:

:digraphs
NU ^@  10    SH ^A   1    SX ^B   2    EX ^C   3    ET ^D   4    EQ ^E   5
AK ^F   6    BL ^G   7    BS ^H   8    HT ^I   9    LF ^@  10    VT ^K  11
FF ^L  12    CR ^M  13    SO ^N  14    SI ^O  15    DL ^P  16    D1 ^Q  17
D2 ^R  18    D3 ^S  19    D4 ^T  20    NK ^U  21    SY ^V  22    EB ^W  23
CN ^X  24    EM ^Y  25    SB ^Z  26    EC ^[  27    FS ^  28    GS ^]  29
RS ^^  30    US ^_  31    SP     32    Nb #   35    DO $   36    At @   64

现在,您可以通过在左列中键入CTRL-k两个字母,然后在右列中插入任何字符。

例如,在我的计算机上,要输入英镑符号,可以在插入模式下输入以下字符:

CTRL-k Pd
£

编写源代码

如果您正在编码,那么vim有很多不同的东西可以帮助您对代码进行操作。

最基本的是语法高亮显示。您可以通过键入以下内容来启用语法高亮:

:syntax on

这应该根据检测到的文件扩展名为文件设置语法高亮。如果要更改高亮的语言类型,可以通过以下方式设置语言:

:set filetype=[language]

如果您想使用系统命令来修改文件中的某些行,则可以!在正常模式下通过使用命令来调用它。

该命令接受动作,然后将其发送给随后的命令。

![motion] filter

例如,要对从当前位置到文件末尾的行进行排序,可以键入:

!G sort

排序是一种Linux命令,默认情况下按字母顺序对输入进行排序。

如果我们要将命令的输出插入文件中,请导航至需要输出的空白行。类型:

!!command

这会将指定命令的输出内容放入文档中。

如果我们想查看命令的结果,但又不想将其插入文档中,则也可以使用命令模式(:)版本,该版本为:

:!command

这将显示命令的结果,但完成后将使您返回到未更改的文档。

减少重复操作(宏的使用)

通常在编辑或创建任何类型的文件时,您会发现自己重复了许多相同或相似的操作。幸运的是,vim提供了一些将命令组保存到中的方法。

要开始录制宏,您可以键入q后跟字母以命名该宏。

qa    # will save macro "a"

现在,您键入的任何命令现在都将记录为宏的一部分。要结束宏,可以再次键入q

因此,如果我们键入:

qa0c3wDELETED<esc>q

这将开始一个宏(保存为“ a”),转到该行的开头,然后用单词“ DELETED”替换接下来的三个单词。然后退出插入模式并结束宏。

要从当前光标位置开始播放此宏,请使用@字符,后跟宏引用:

@a

这将从当前位置开始重播宏命令。

如果我们希望创建一个以插入模式结束的宏,则必须以另一种方式结束该宏(键入“ q”将仅插入字母q)。我们可以在插入模式下执行普通模式命令CTRL-O,然后键入“q”来结束宏的录制。

因此,如果我们要更改此行上第一个括号的内容,则可以有一个宏,内容为:

qi0f(lct)<CTRL-O>q

这将创建一个宏 “i”。宏移动到当前行的开头。然后找到左括号并向右移动一个字符(在括号内移动)。然后,它将更改所有内容,直到右括号为止。在vim处于插入模式下等待替换文本时,我们按键,CTRL-O然后q结束宏,从而使我们处于插入模式下准备替换文本。

总结

现在,您应该对vim可以帮助您的一些更高级的方法有所了解。虽然本文内容看起来很多,但这只是惊鸿一瞥。

其实还有很多功能我们没有涉及到,您不需要了解vim所有内容。您可选择使用vim的方式学习您认为重要的内容。每天练习和使用vim的次数越多,它的感觉就会越自然,它就会变得越强大。

如果您有很好的技巧,欢迎在评论区交流

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值