10个高效Linux技巧及Vim命令对比

2020-07-08 00:00:00 执行 命令 光标 命令行 输入

Vim的很多命令和功能与Linux系统的命令和功能及其相似,可以说是一脉相承。Vim教程网(https://vimjc.com)总结了10条Linux下提高效率的小技巧,并与Vim对应命令进行对比。

(1) <Ctrl a>:Linux 命令行下执行该命令,将光标移动到行首 (a 是 ahead 的缩写)

快速移动光标,不仅是在 Vim 下的高优需求,也是 Linux 命令行下的常见工作场景。

例如,在 Linux 命令行下敲完了一长串命令后,如果想在前面先执行一个命令,则可以按组合键 <Ctrl a> 将光标移动到行首,输入想添加的命令。

Vim 下也有将光标快速移动到行首的实用命令。在 Vim 普通模式下,使用 可以将光标移动到当前光标所在行的行首,使用 ^ 可以在Vim下移动光标到当前行的个非空字符。

(2) <Ctrl e>:Linux 命令行下执行该命令,将光标移动到行尾 (e 是 end 的缩写)

既然有将光标快速移动到行首的需求,自然也有将光标快速移动到行尾的需求。与组合键 <Ctrl a> 对应的命令 <Ctrl e> 会将光标移动到行尾,方便继续输入要执行的命令。

Vim 下也有将光标快速移动到行尾的命令。在 Vim 普通模式下,使用 $ 可以将光标移动到当前行的行尾,而使用 A 命令可以将光标移动到当前行的行尾,并进入插入模式。

(3) <Ctrl r>:Linux 命令行下执行该命令,会进入历史命令查找窗口,输入要查找的命令可快速选择历史命令

个人觉得,<Ctrl r> (r 是 retrieve (检索) 的缩写)命令是一个非常实用的 Linux 技巧。当需要在已经执行过的历史命令中 (即 history 命令的结果) 查找某条命令并再次执行该命令时,可以使用 <Ctrl r> 调出 Linux 历史命令的搜索窗口,并输入要查找的目前命令进行查找并重新执行之。

当然可以通过 history | grep xxx 在已执行的历史命令列表中找到名为 xxx 的命令,然后复制该命令再重复执行之。

毋庸置疑,<Ctrl r> 相比上述的步骤更加高效、便捷。

Vim 里的模糊搜索插件 ctrlp 跟 Linux 终端命令行下执行 <Ctrl r> 的功能非常相似。推荐将 ctrlp 作为你的一个必备 Vim 插件。

(4) <Ctrl w>:Linux 命令行下执行该命令,会删除当前光标附近的一个词 (以空格隔开的字符串)

删除当前光标附近的一个词,这是工作中经常遇到的一个场景。在命令行输入命令时,经常会因为输入失误或改变命令而需要进行删除,使用退格键 (Backspace) 一个个删除字符的效率太低了,如果能一次删除一个单词,将会极大减少按键次数,整体提高Linux使用效率。

w 表示以一个空格隔开的字符串,这在 Vim 下也是相同的概念。推荐阅读:Vim基于单词移动及Vim单词、字串概念。

(5) <Ctrl u>:Linux 命令行下执行该命令,会删除命令行上已经敲出来的所有文本 (即删除整行)

经常在工作中需要取消已经敲出了一长串的命令。除了可以使用 <Ctrl c> 提前中断本次即将执行的命令外,还可以使用 <Ctrl u> 删除命令行上所有已经输入的字符。

个人觉得,<Ctrl u> 的实用性其实不大,毕竟已经有了组合命令 <Ctrl c> 能完成同样的操作,其被大家所熟知。

<Ctrl c> 用于中断程序的执行,而 <Ctrl z> 用于暂停程序的执行 (可通过 fg 命令恢复)。

在 Vim 下,可以使用 dd 命令快速删除当前光标所在行。

(6) <Ctrl y>:Linux 命令行下执行该命令,将粘贴 <Ctrl w><Ctrl u> 等命令删除的文本

当删除了 Linux 命令行中已经输入的某些字符后,可以在适当的时机将之再粘贴出来以便再次使用。

熟悉 Vim 基本命令的都知道,y 在 Vim 命令集中是 yank 的缩写,表示 复制 功能。Vim 下经常使用 yy 命令复制文本。

聪明如斯的你,肯定是记住了 yy 命令,自然也就记住了 <Ctrl y> 命令哦~ (这也是为什么要在本文中将这些 Linux 实用技巧与 Vim 命令进行对比说明的原因)

(7) !xx关键字:Linux 命令行下执行该命令,会执行一条包含有 xx关键字 的历史命令

history 命令记录了 Linux 系统近执行过的历史命令列表。如果需要重复执行近一条包含有 xx关键字 的命令,可以使用 !xx关键字

! 真是使用 Linux 下的一个操作神器。可以使用它快速执行一条历史命令,既避免了重复的按键输入,又减少了通过翻 "↑" 箭头人肉查找历史命令的工作量。

如果包含有 xx关键字 的历史命令有多条,且本次希望执行的目标命令并不是隔当前时间近的一条,则还可以使用 !行号n 的方式指定执行 history 列表中行号为 n 的命令。

可以看出,! 既可以使用关键字指定要执行的历史命令,也可以通过行号指定要执行的历史命令。推荐使用搜索引擎搜索关键字 "linux 惊叹号" 阅读更多相关内容的细节。

Vim 下好像并没有与之功能类似的命令?

(8) cd -:Linux 命令行下执行该命令,会将当前目录切换到上一次所在目录

在 Linux 命令行下进行操作时,经常遇到辛辛苦苦进入到一个很深的目录并执行一些操作后,不小心输入了 cd 命令切换回了当前用户根目录的情况。再次输入完整的深层次目录或通过翻 "↑" 键以便再次进入该目录显然是一个很 "蠢笨" 的方法。

在 Linux 下,假设当前所在目录为 a,通过 cd 某路径 命令切换到了 b 目录后,使用 cd - 命令可快速切换回 a 目录哦。

(9) <Shift Insert>:Linux 命令行下执行该命令,可粘贴复制到系统剪切板上的内容

在 Linux 命令行下,除了可以使用鼠标右键粘贴复制的文本外,还可以使用组合键 <Shift Insert> 完成粘贴操作。

据说,极客型 Linux 玩家可以做到不使用鼠标完成所有的日常工作。<Shift Insert> 进行文本粘贴显然可以减少使用鼠标的频率。在使用 xshell 等远程终端模拟软件时,使用 <Shift Insert> 是不是一个更加高效、便捷的文本粘贴方法呢?

<Ctrl Insert> 用于复制已选中的命令行控制台文本 (不是 <Ctrl c> 哦)。

(10) <Ctrl l>:Linux 命令行下执行该命令,可清空当前屏幕

Linux 下可以使用 clear 命令清空整个屏幕,<Ctrl l> 可达到同样的效果。

Vim 下,zz 命令可用来重绘屏幕并把当前行显示在窗口正中。更多Vim实用技巧,推荐阅读《30个Vim常用命令和使用技巧整理》。

除此之外,还有一些比较不为人熟知的小技巧,例如,连续按3次 Esc 键可显示当前系统支持的所有命令,<Ctrl [ 相当于 Esc 键的功能,<Ctrl i> 等价于 Tab 键的功能等。

更多 Linux 和 Vim 实用技巧,期待你来跟我分享~

相关文章