linux命令行下按键不删除

不及物动词 其他 11

回复

共3条回复 我来回复
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    在Linux命令行下,按键不删除是因为默认情况下,终端采用的是正常模式(即非vim编辑模式),按下任意键都会直接输出到终端上,不会删除之前输入的字符。

    如果希望在输入错误时能够使用删除键删除之前输入的字符,可以进行以下操作:

    1. 使用vim编辑模式:在命令行下输入 `set -o vi`,然后按Enter键,即可切换为vim编辑模式。在vim模式下,可以使用h、j、k、l键进行光标移动,可以按下i键进行插入、修改文本,可以使用x键删除当前字符,使用dd键删除整行等。

    2. 使用GNU Readline库:GNU Readline是一个开源的命令行编辑库,它可以让用户在命令行下使用各种编辑功能。可以在用户的`.bashrc`或者`.bash_profile`文件中添加以下行:

    `set editing-mode vi`

    这将启用vi编辑模式。编辑完后,运行`source .bashrc`或者`source .bash_profile`来使配置生效。然后在命令行下按下Esc键,即可进入命令行编辑模式,此时可以使用vi的各种编辑命令。

    3. 使用readline快捷键:在非vim编辑模式下,也可以使用一些readline的快捷键来实现删除功能。常用的快捷键有:

    – Ctrl + H 或 Backspace:删除光标前的一个字符
    – Ctrl + W:删除光标前的一个单词
    – Ctrl + U:删除光标前的一行
    – Ctrl + K:删除从光标位置到行尾的内容

    以上是在Linux命令行下使按键能够删除之前输入的字符的方法。可以根据自己的喜好选择合适的方式来使用。

    2年前 0条评论
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    在Linux命令行下,按键不删除是因为终端的行编辑模式默认设置为”扩展模式”,而不是”删除模式”。在扩展模式下,按下任意键都会将字符插入光标位置,而不会删除光标后的字符。这个行为与其他操作系统(如Windows)中的默认行为不同。要在Linux命令行下实现删除功能,可以按下Backspace键或者Ctrl+H键。

    下面是关于Linux命令行按键不删除的更多信息:
    1. 扩展模式和删除模式:在Linux终端中,扩展模式允许在任意位置插入字符,而删除模式允许删除光标后的字符。扩展模式更适合命令行输入,因为可以方便地修改已输入的命令。删除模式通常用于文本编辑器等需要进行大量文本修改的场景。
    2. Backspace键和Delete键:在大部分Linux终端中,按下Backspace键可以删除光标前的字符,而按下Delete键可以删除光标后的字符。这与其他操作系统中的默认行为(例如Windows中,Delete键用于删除光标后的字符)有所不同。如果需要将Delete键用于删除光标后的字符,可以通过修改终端的设置来实现。
    3. Ctrl+H键:在Linux中,也可以使用Ctrl+H键来代替Backspace键,实现删除光标前的字符的功能。这是一种常用的快捷键,尤其在远程连接到Linux服务器的情况下,有些终端对Backspace键的处理可能会有问题,而Ctrl+H键始终可靠。
    4. 修改设置:如果想要修改终端的行编辑模式,可以通过修改终端设置文件(如.bashrc或.profile)来实现。具体的修改方式可以参考终端的文档或在线资源。
    5. 使用其他终端:如果对终端的行编辑模式不习惯或者希望拥有更多自定义选项,可以考虑使用其他终端模拟器,例如Konsole、GNOME Terminal等。这些终端模拟器通常提供更多的配置选项,可以满足用户的个性化需求。

    总之,Linux命令行下按键不删除是因为终端的默认行编辑模式是扩展模式。要实现删除功能,可以使用Backspace键、Ctrl+H键或者修改终端设置。如果需要更多的自定义选项,可以考虑使用其他终端模拟器。

    2年前 0条评论
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    在Linux命令行下,按键不删除是指在输入命令时,按下退格键或删除键时,输入的字符并不会被删除。这是因为Linux命令行默认情况下是使用终端模式,而终端模式下,退格键和删除键并不会删除输入的字符。如果想要实现在命令行下按键删除字符的功能,可以通过以下方法实现。

    方法一:使用readline库
    1. 安装readline库:在终端中执行以下命令安装readline库。
    “`
    sudo apt-get install libreadline-dev
    “`

    2. 创建一个文件,比如”delete_binding.c”,并在该文件中编写以下代码。
    “`c
    #include
    #include
    #include

    int main(){
    char* line;
    while ((line = readline(“>> “)) != NULL) {
    if (line[0] != ‘\0’) {
    add_history(line);
    }
    printf(“Input: %s\n”, line);
    free(line);
    }
    return 0;
    }
    “`

    3. 编译代码:在终端中执行以下命令将代码编译成可执行文件。
    “`shell
    gcc -o delete_binding delete_binding.c -lreadline
    “`

    4. 运行代码:在终端中执行以下命令运行可执行文件。
    “`shell
    ./delete_binding
    “`

    现在,在命令行中输入命令时,按下退格键或删除键即可删除已输入的字符。

    方法二:使用stty命令
    可以使用stty命令来设置终端模式,使得在命令行下按键可以删除字符。具体操作如下。

    1. 在命令行中执行以下命令,将终端模式设置为”cooked”模式。
    “`shell
    stty cooked
    “`

    现在,在命令行中输入命令时,按下退格键或删除键即可删除已输入的字符。

    如果想要恢复到默认的终端模式,可以执行以下命令。
    “`shell
    stty sane
    “`

    以上就是在Linux命令行下实现按键删除字符的方法。使用readline库可以实现更加灵活和定制化的按键删除功能,而使用stty命令则可以快速设置终端模式。根据实际需求选择合适的方法。

    2年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部