Vim的很多命令和功能与Linux系统的命令和功能及其相似,可以说是一脉相承。Vim教程网(https://vimjc.com)总结了10条Linux下提高效率的小技巧,并与Vim对应命令进行对比。
(1)<Ctrl a>
:Linux 命令行下执行该命令,将光标移动到行首 (a 是 ahead 的缩写)
快速移动光标,不仅是在 Vim 下的高优需求,也是 Linux 命令行下的常见工作场景。
例如,在 Linux 命令行下敲完了一长串命令后,如果想在前面先执行一个命令,则可以按组合键 <Ctrl a>
将光标移动到行首,输入想添加的命令。
Vim 下也有将光标快速移动到行首的实用命令。在 Vim 普通模式下,使用 0
可以将光标移动到当前光标所在行的行首,使用 ^
可以在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 键的功能等。
转:https://zhuanlan.zhihu.com/p/93483204