专栏首页linux百科小宇宙http://p9.pstatp.com/large/tos-cn-i-0022/af4cb77873714226b5d8e616588eaa7c\

http://p9.pstatp.com/large/tos-cn-i-0022/af4cb77873714226b5d8e616588eaa7c\

命令行中修改已经输入的命令比较麻烦,如果你不知道一些快捷键的话,只能使用方向键一个一个字符地移动到目标位置进行修改,对于比较复杂且过长的命令来说,效率不高。

以下信息来自 bash 的 man 页面:

$ man bash

# ...

Commands for Moving

beginning-of-line (C-a)

Move to the start of the current line.

end-of-line (C-e)

Move to the end of the line.

forward-char (C-f)

Move forward a character.

backward-char (C-b)

Move back a character.

forward-word (M-f)

Move forward to the end of the next word. Words are composed of alphanu-

meric characters (letters and digits).

backward-word (M-b)

Move back to the start of the current or previous word. Words are composed

of alphanumeric characters (letters and digits).

clear-screen (C-l)

Clear the screen leaving the current line at the top of the screen. With an

argument, refresh the current line without clearing the screen.

redraw-current-line

Refresh the current line.

# ...

可看到 bash 本身提供了一些有用的快捷键可在命令中快速导航,

control + a 定位到行首(st

a

rt)

control + e 定位到行末(

e

nd)

control + f 向前移动一个单词(

f

orward)

control + b 向后移动一个单词(

b

ack)

移动光标,大部分情况下,我觉得记住这四个可以满足日常需求。

除了移动光标,还有一些编辑的快捷键,在 man 页面中 Killing and Yanking 部分,

# ...

Killing and Yanking

kill-line (C-k)

Kill the text from point to the end of the line.

backward-kill-line (C-x Rubout)

Kill backward to the beginning of the line.

unix-line-discard (C-u)

Kill backward from point to the beginning of the line. The killed text is

saved on the kill-ring.

kill-whole-line

Kill all characters on the current line, no matter where point is.

kill-word (M-d)

Kill from point to the end of the current word, or if between words, to the

end of the next word. Word boundaries are the same as those used by for-

ward-word.

backward-kill-word (M-Rubout)

Kill the word behind point. Word boundaries are the same as those used by

backward-word.

unix-word-rubout (C-w)

Kill the word behind point, using white space as a word boundary. The

killed text is saved on the kill-ring.

unix-filename-rubout

Kill the word behind point, using white space and the slash character as the

word boundaries. The killed text is saved on the kill-ring.

delete-horizontal-space (M-\)

Delete all spaces and tabs around point.

kill-region

Kill the text in the current region.

copy-region-as-kill

Copy the text in the region to the kill buffer.

copy-backward-word

Copy the word before point to the kill buffer. The word boundaries are the

same as backward-word.

copy-forward-word

Copy the word following point to the kill buffer. The word boundaries are

the same as forward-word.

yank (C-y)

Yank the top of the kill ring into the buffer at point.

yank-pop (M-y)

Rotate the kill ring, and yank the new top. Only works following yank o

yank-pop.

# ...

其中这一个我最常用:

control + u 删除当前光标位置到行首的内容,配合着 control + e 把光标定位到行末再使用该命令,可实现清空整行的效果

除了这些快捷键,其实命令行还有个 vi 模式,该模式下的表现和在 vi 编辑器里一样,对于 vi 用户来说,进入这种模式后,编辑和修改命令就显得十分得心应手了。

开启 vi 模式

不同 shell 中开启的命令不一样,我比较偏好 fish,因为它的自动补全真的好用到无以复加。

运行 fish_vi_key_bindings 即可进入 vi 模式。

$ fish_vi_key_bindings

运行 fish_default_key_bindings 回到默认。

$ fish_default_key_bindings

<p style="text-align: center;">

<p align="center">命令行的 vi 模式演示

如果需要一直开始,可以配置文件中添加上述命令。

$ vi ~/.config/fish/config.fish

# 其他代码

fish_vi_key_bindings

选择合适的主题

你可能需要一个可以在命令提示行中显示当前 vi 状态的主题。

推荐 fish 搭配 omf 使用 omf 中的主题。

fish 有默认的 vi 状态展示,和主题很不搭配。

<p style="text-align: center;">

<p align="center">fish 默认的 vi 状态展示

需要手动去掉,配置文件中添加如下脚本:

function fish_mode_prompt; end

修正 fish 中的自动补全

如果发现 vi 模式下, fish 的自动补全快捷键 control + f 不能用了,可在配置文件中添加如下脚本来修复这个快捷键:

function fish_user_key_bindings

for mode in insert default visual

bind -M $mode \cf forward-cha

end

end

原文链接:https://www.linuxidc.com/Linux/2019-05/158429.htm

我来说两句

0 条评论
登录 后参与评论

推荐阅读

  • 低成本同地区容灾

    相信大家也遇到过dd和cc 下面这个办法可以让你受到ddos 的时候网站业务不中断 受到cc的时候多个服务器可以缓解其压力

    鹰瑶酱
    云服务器轻量应用服务器 Lighthouse
  • Groovy热更新Java实践

    之前在写Groovy动态添加方法和属性及Spock单测文章的时候,我还没意识到metaclass的神奇之处,直到有一天我突然想要不经过构建过程直接更新功能,也就是传说中的热更新。

    FunTester
  • 腾讯云联网环境下搭建kubernetes集群

    讲一下为什么使用TencentOS Server 3.1 (TK4)的系统。还不是因为centos8不提供长期维护了....,顺便体验一下腾讯云开源的tencentos.详情见腾讯云官网:https://cloud.tencent.com/document/product/213/38027。比较是与centos8兼容的 安装centos8的流程搭建一遍kubernetes体验一下跨区域是否可行!

    对你无可奈何
    云联网Kubernetes
  • 自建kafka迁移到云上Ckafka整体方案

    3. CKafka 消费端新起消费者,配置新的 CKafka 集群的 bootstrap-server,消费新的 CKafka 集群。

    邓愉悦
    消息队列 CKafka架构设计
  • Linux服务器入门:如何远程登录自己的腾讯云服务器?

    现在,更多的网站使用Nginx充当Web服务器并部署为LEMP环境,即使是Java Web项目,通常也会使用Nginx进行端口反向代理,而Nginx的兼容和稳定性,Linux远远好于Windows Server。

    Mintimate
    云服务器Linux轻量应用服务器 Lighthousessh
  • 【有奖课程互动-十一月期-节点管理】看视频,贴截图,知识打包,好学到饱

    知识赠与好学人,本期打包了蓝鲸节点管理使用视频汇总,每个视频都包含了该产品的基础使用功能,快来看看运维大牛们平时都是怎么使用蓝鲸节点管理的~

    腾讯蓝鲸助手
    运维运维解决方案
  • 2021年10月云+社区视频月度榜单公布

    云加社区
    云+社区
  • 亿级流量架构之资源隔离思路与方法

    常见的资源,例如磁盘、网络、CPU 等等,都会存在竞争的问题,在构建分布式架构时,可以将原本连接在一起的组件、模块、资源拆分开来,以便达到最大的利用效率或性能。

    常见_youmen
    架构设计系统架构
  • 亿级流量架构之网关设计思路,常见网关对比

    本文准备围绕七个点来讲网关,分别是网关的基本概念、网关设计思路、网关设计重点、流量网关、业务网关、常见网关对比,对基础概念熟悉的朋友可以根据目录查看自己感兴趣的部分。

    常见_youmen
    微服务架构系统架构架构设计
  • Android 深色模式的项目应用

    早在四年前就准备做深色模式的,当时用的三方的SDK,但是SDK上还有bug,不能适配RecyclerView,用上后会很卡,然后就一直放着了,有些用户一直催着要深色模式:

    Jingbin
    Android

扫码关注云+社区

领取腾讯云代金券