东莞房价2024/seo排名哪家有名

东莞房价2024,seo排名哪家有名,lol有哪些网站是做陪玩的,建筑人才网与建筑英才网注:机翻,未校。 vim terminal “raw” mode Vim 终端 “raw” 模式 1. 原始模式与已处理模式的区别 We know vim puts the terminal in “raw” mode where it receives keystrokes as they are typed, opposed to “cooked” mode where the command…

注:机翻,未校。


vim terminal “raw” mode

Vim 终端 “raw” 模式

1. 原始模式与已处理模式的区别

We know vim puts the terminal in “raw” mode where it receives keystrokes as they are typed, opposed to “cooked” mode where the command is not processed fully unless the end-user enters it in the terminal.
我们知道,vim 会将终端置于“原始”模式,在这种模式下,终端会即时接收按键输入,与“已处理”模式不同,在“已处理”模式下,命令只有在终端中输入后才会被完全处理。

2. 模式切换的机制

How does the shell distinguish when to go into either mode? How does this switch happen? Is there a mode in between “raw” and “cooked” mode?
那么,shell 是如何区分何时进入这两种模式的呢?这种切换是如何发生的?在“原始”模式和“已处理”模式之间是否存在一种中间模式?

To clarify, any process that has access to a terminal can change that terminal’s settings, simply by calling tcsetattr() with the appropriate attributes (the same call used by the termstate_ functions in cush).
需要明确的是,任何能够访问终端的进程都可以通过调用 tcsetattr() 并设置适当的属性来更改该终端的设置(cush 中的 termstate_ 函数也使用了相同的调用)。

vim is an example of a process that does that. Raw mode is also entered by the readline() function cush (and bash) uses. That’s why, for instance, Ctrl-A and Ctrl-E work and many other readline shortcuts. When readline() returns, the terminal is set back into whatever state it was in before the call, so we don’t notice. If we had implemented our shell with, say, scanf() and printf() only, we wouldn’t have put the terminal into the raw state, so a shell could be implemented without raw mode, albeit with less user comfort.
vim 是一个会这样做的进程的例子。cush(以及 bash)使用的 readline() 函数也会进入原始模式。这就是为什么,例如,Ctrl-A 和 Ctrl-E 以及许多其他 readline 快捷键可以正常工作。当 readline() 返回时,终端会恢复到调用之前的状态,所以我们察觉不到。如果我们只用 scanf() 和 printf() 来实现我们的 shell,我们就不会将终端置于原始状态,因此虽然可以实现一个没有原始模式的 shell,但用户体验会差很多。

3. POSIX 中的原始模式定义

As to what “raw” mode is and how to enter it. It turns out that “raw” vs “cooked” mode isn’t actually the official term (anymore). The terms come from Unix System 7. In POSIX, what’s commonly called “raw” mode is a combination of switches. tcsetattr(3) describes it as:
关于“原始”模式是什么以及如何进入它的问题。事实证明,“原始”模式与“已处理”模式并不是官方术语(至少不再是)。这些术语来源于 Unix System 7。在 POSIX 中,通常所说的“原始”模式实际上是一组组合开关。tcsetattr(3) 对其描述如下:

3.1 原始模式的设置

Raw mode
原始模式

cfmakeraw() sets the terminal to something like the “raw” mode of the old Version 7 terminal driver: input is available character by character, echoing is disabled, and all special processing of terminal input and output characters is disabled. The terminal attributes are set as follows:
cfmakeraw() 将终端设置为类似于旧版 Version 7 终端驱动程序中的“原始”模式:输入是逐字符可用的,回显被禁用,并且终端输入和输出字符的所有特殊处理都被禁用。终端属性被设置如下:

termios_p->c_iflag &= ~(IGNBRK | BRKINT | PARMRK | ISTRIP| INLCR | IGNCR | ICRNL | IXON);
termios_p->c_oflag &= ~OPOST;
termios_p->c_lflag &= ~(ECHO | ECHONL | ICANON | ISIG | IEXTEN);
termios_p->c_cflag &= ~(CSIZE | PARENB);
termios_p->c_cflag |= CS8;

You can look up what all these attributes mean, but the key attribute here is ICANON, and that’s how POSIX refers to line-by-line vs key-by-key processing mode, as “canonical” (line-by-line) and “non-canonical” mode.
您可以查阅这些属性的具体含义,但其中的关键属性是 ICANON,POSIX 就是通过它来区分逐行处理模式与逐键处理模式的,分别称为“规范”(逐行)模式和“非规范”模式。

4. 实践原始模式

If you want to try out raw mode yourself, here’s a short program:
如果你想自己尝试原始模式,这里有一个简短的程序:

4.1 示例代码

// raw.c
#include <stdio.h>
#include <termios.h>
#include <unistd.h>
#include <fcntl.h>
#include <assert.h>int
main()
{int terminal_fd = open(ctermid(NULL), O_RDWR);assert (terminal_fd != -1);struct termios tty_state;int rc = tcgetattr(terminal_fd, &tty_state);struct termios saved_tty_state = tty_state;assert (rc == 0);tty_state.c_iflag &= ~(IGNBRK | BRKINT | PARMRK | ISTRIP| INLCR | IGNCR | ICRNL | IXON);tty_state.c_oflag &= ~OPOST;tty_state.c_lflag &= ~(ECHO | ECHONL | ICANON | ISIG | IEXTEN);tty_state.c_cflag &= ~(CSIZE | PARENB);tty_state.c_cflag |= CS8;printf("press ctrl-d to exit\n");rc = tcsetattr(terminal_fd, TCSANOW, &tty_state);assert (rc == 0);char c; while (read(0, &c, 1) == 1 && c != 0x4)write(1, &c, 1);// restore sane state on exitrc = tcsetattr(terminal_fd, TCSANOW, &saved_tty_state);assert (rc == 0);
}

4.2 编译与运行

Compile with gcc -o raw raw.c and then you can start it with ./raw. Everything input is echoed back. Ctrl-C and Ctrl-Z don’t work anymore. If you type Enter it goes to the beginning of the line (type Ctrl-J to go to the next line). Type Ctrl-D (0x4) to exit.
使用 gcc -o raw raw.c 编译该程序,然后可以通过 ./raw 启动它。输入的所有内容都会被回显。Ctrl-C 和 Ctrl-Z 不再起作用。如果你按下回车键,光标会回到行首(按下 Ctrl-J 可以移到下一行)。按下 Ctrl-D(0x4)退出。

5. 原始模式与已处理模式的应用

The program above demonstrates how to set a terminal into raw mode and restore its original state upon exit. It reads input character by character and echoes them back to the terminal. This behavior is typical of raw mode, where the terminal processes input and output at the character level without any special handling of control characters like Ctrl-C or Ctrl-Z.
上述程序演示了如何将终端设置为原始模式,并在退出时恢复其原始状态。它逐字符读取输入并将它们回显到终端。这种行为是原始模式的典型特征,在这种模式下,终端会在字符级别处理输入和输出,而不会对像 Ctrl-C 或 Ctrl-Z 这样的控制字符进行特殊处理。

This is particularly useful for applications like text editors (e.g., vim) or interactive shells that require fine-grained control over user input and terminal output. By disabling canonical processing (ICANON) and other terminal attributes, these applications can implement their own input handling mechanisms, such as key bindings and command-line editing features.
这对于像文本编辑器(例如 vim)或交互式 shell 这样的应用程序特别有用,因为它们需要对用户输入和终端输出进行精细控制。通过禁用规范处理(ICANON)和其他终端属性,这些应用程序可以实现自己的输入处理机制,例如按键绑定和命令行编辑功能。

In contrast, “cooked” mode (or canonical mode) is the default mode for most terminal applications. In this mode, the terminal buffers input until a newline character is received, allowing for line editing and processing of special control characters. This mode is more user-friendly for command-line interfaces where users expect to be able to edit their input before executing a command.
相比之下,“已处理”模式(或规范模式)是大多数终端应用程序的默认模式。在这种模式下,终端会将输入缓冲起来,直到接收到换行符,从而允许进行行编辑和处理特殊控制字符。在这种模式下,用户可以在执行命令之前编辑输入,因此对于命令行界面来说,这种模式更加用户友好。

6. 总结

To summarize, the distinction between raw and cooked modes lies in how the terminal handles input and output. Raw mode provides direct, character-by-character access, while cooked mode processes input line by line and interprets control characters. The ability to switch between these modes allows applications to tailor their behavior to the specific needs of the user interface they are implementing.
总之,原始模式和已处理模式的区别在于终端如何处理输入和输出。原始模式提供直接的逐字符访问,而已处理模式逐行处理输入并解释控制字符。能够在这些模式之间切换,使得应用程序可以根据它们所实现的用户界面的具体需求来调整行为。


【Linux】vim 三种模式的切换、常用命令总结

冰冷的希望于 2023-08-25 23:04:37 发布

vim 是一个非常强大而且常用的 Linux 文本工具。

1. 模式

vim 主要有三种模式,分别是命令模式、输入模式、末行模式,三者切换关系如下:

在这里插入图片描述

默认是命令模式,按 iao 进入输入模式,再按 ESC 返回到命令模式。在命令模式输入 : 切换到末行模式,再按 ESC 又返回到命令模式。输入模式和末行模式之间不能直接切换,只能通过命令模式切换。

2. 命令模式

命令说明
xXx 是删除下一个字符,X 是删除上一个字符
数字 + x删除指定数量的字符,例如 10x 表示删除 10 个字符
dd剪切(删除)光标所在行
数字 + dd删除指定数量的行,例如 20dd 表示删除 20 行
yy复制光标所在行
数字 + yy复制指定数量的行,例如 20yy 表示复制 20 行
pPp 是粘贴到下一行,P 是粘贴到上一行
u撤销
Ctrl+r反撤销
.(小数点)重复上一个动作
ggGgg 是回到第一行,G 是回到最后一行
数字 + G跳转到指定行,例如 20G 表示跳转到第 20 行
y1GyGy1G 是复制当前行前面的所有数据,yG 是复制当前行之后的全部数据
d1GdGd1G 是删除当前行前面的所有数据,dG 是删除当前行之后的全部数据
vVCtrl+vv 是光标起始和结束之间的文本会被选中,V 是光标起始和结束之间的所有行被选中,Ctrl+v 是光标起始和结束之间构成的矩形区域被选中

3. 输入模式

命令说明
iIi 是从光标所在位置开始输入,I 是从光标所在行第一个非空白字符开始输入
aAa 是从光标所在的下一个字符开始输入,A 是从光标所在行的最后一个字符开始输入
oOo 是从光标所在行的下一行新的一行开始输入,O 是从光标所在行的上一行新的一行开始输入
rRr 是取代光标所在的字符一次,R 是依次取代光标所在字符

4. 末行模式

命令说明
:w保存
:q退出
:wqZZ保存并退出
:q!ZQ不保存退出
:set nu显示行号
:set nonu隐藏行号
:/搜索的文本搜索指定文本
:%s/要替换的字符/替换后的字符/g全局替换文本,% 表示对整个文件进行操作,g 表示全局替换

via:

  • CS3214 Computer Systems - Spring 2025
    https://courses.cs.vt.edu/cs3214/spring2025/questions/rawmode

  • How to avoid vim set terminal to raw mode when stdin is /dev/null? · Issue #15893 · vim/vim · GitHub
    https://github.com/vim/vim/issues/15893

  • 【Linux】vim 三种模式的切换、常用命令总结_描述一下 vim 命令的状态,不同状态之间的切换方式?-CSDN 博客
    https://blog.csdn.net/qq_39147299/article/details/108972206

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/72848.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docker部署dify

1.安装docker 参考链接 https://ascendking.blog.csdn.net/article/details/136407383 设置docker源 vim /etc/docker/daemon.json {"registry-mirrors": ["https://docker.registry.cyou", "https://docker-cf.registry.cyou", "http…

Linux应用:Linux的信号

什么是信号 信号是一种软件中断&#xff0c;用于通知进程系统中发生了某种特定事件。它是操作系统与进程之间&#xff0c;以及进程与进程之间进行异步通信的一种方式。在 Linux 系统中&#xff0c;信号是一种比较简单的进程间通信机制。当一个信号产生时&#xff0c;内核会通过…

实时监控、数据分析!Web-Check构建你的网站健康检测系统实操方案

文章目录 前言1.关于Web-Check2.功能特点3.安装Docker4.创建并启动Web-Check容器5.本地访问测试6.公网远程访问本地Web-Check7.内网穿透工具安装8.创建远程连接公网地址9.使用固定公网地址远程访问 前言 在数字化运维领域&#xff0c;网站稳定性保障始终是开发者和运维团队的核…

win32汇编环境,网络编程入门之八

;在上一教程里&#xff0c;我们学习了简单的处理服务器返回的数据 ;在这一教程里&#xff0c;我们了解一下&#xff0c;当连接上网站后&#xff0c;应该发送什么数据过去的问题 ;这里有个简单的方式学习&#xff0c;以下是一个示例 ;我们上网的时候可以用谷歌浏览器&#xff0c…

一文了解ThreadLocal

什么是ThreadLocal&#xff1f; ThreadLocal是每个线程私有的&#xff0c;线程可以把自己的私有数据放到ThreadLocal里面&#xff0c;不用担心其他线程访问到自己ThreadLocal。 通过set()方法将值存入ThreadLocal或者修改值&#xff0c;get()方法取出值&#xff0c;remove()方…

常⻅CMS漏洞之一:WordPress

WordPress是⼀个以PHP和MySQL为平台的⾃由开源的博客软件和内容管理系统。WordPress具有插件架构和模板系统。截⾄2018年4⽉&#xff0c;排名前1000万的⽹站中超过30.6%使⽤WordPress。 WordPress是最受欢迎的⽹站 内容管理系统。全球有⼤约30%的⽹站(7亿5000个)都是使⽤WordP…

【第17节】windows sdk编程:线程与线程调度

目录 一、线程 1.1 线程的基本概念 1.2 何时创建线程 二、线程控制 三、遍历线程 四、线程内核对象 4.1 线程上下文 4.2 暂停次数 4.3 信号 五、线程调度 5.1 什么是线程优先级 5.2 进程优先级与相对线程优先级 5.3 编程改变优先级 5.4 动态优先级的概念 一、线程…

Python数据可视化实战:从基础图表到高级分析

Python数据可视化实战&#xff1a;从基础图表到高级分析 数据可视化是数据分析的重要环节&#xff0c;通过直观的图表可以快速洞察数据规律。本文将通过5个实际案例&#xff0c;手把手教你使用Python的Matplotlib库完成各类数据可视化任务&#xff0c;涵盖条形图、堆积面积图、…

【机器学习-分类算法】

比如将一张图片按尺寸识别分类为横向或者纵向两类就是二分类问题 设x轴为图像的宽、y轴为图像的高&#xff0c;那么把训练数据展现在图上就是这样的: 若增加更多的数据集有: 如果只用一条线将图中白色的点和黑色的点分开,那么: 分类的目的就是找到这条线,就可以根据点在线…

Docker build 会在本地产生巨大的文件

Docker build 会在本地产生巨大的文件&#xff0c; 比如 用 这个命令列出本地镜像 docker images 可见size都是很大的&#xff0c; 到docker目录下&#xff0c;看到ext4.vhdx的大小 80多G 那只能用这个命令把不用的镜像删掉了&#xff1a; &#xff08;rmi后面是镜像id&a…

台式机电脑组装---电脑机箱与主板接线

台式机电脑组装—电脑机箱与主板接线 1、机箱连接主板的跳线一般主要有USB 2.0、USB 3.0、前置音频接口(HD_AUDIO)以及POWER SW、RESET SW、POWER LED、HDD LED四个主板跳线&#xff0c;这些跳线分别的含义如下。 RESET SW&#xff1a;机箱重启按键&#xff1b;注&#xff1a…

【虚幻引擎UE5】SpawnActor生成Character实例不执行AI Move To,未初始化AIController的原因和解决方法

虚幻引擎版本&#xff1a;5.5.4 问题描述 刚创建的Third Person项目里&#xff0c;定义一个BP_Enemy蓝图&#xff0c;拖拽到场景中产生的实例会追随玩家&#xff0c;但SpawnActor产生的实例会固定不动。BP_Enemy蓝图具体设计如下&#xff1a; BP_Enemy的Event Graph ​​ 又定义…

跨平台RTSP高性能实时播放器实现思路

跨平台RTSP高性能实时播放器实现思路 目标&#xff1a;局域网100ms以内超低延迟 一、引言 现有播放器&#xff08;如VLC&#xff09;在RTSP实时播放场景中面临高延迟&#xff08;通常数秒&#xff09;和资源占用大的问题。本文提出一种跨平台解决方案&#xff0c;通过网络层…

【Linux内核系列】:动静态库详解

&#x1f525; 本文专栏&#xff1a;Linux &#x1f338;作者主页&#xff1a;努力努力再努力wz &#x1f4aa; 今日博客励志语录&#xff1a; 有些鸟儿是注定是关不住的&#xff0c;因为它们的每一片羽翼都沾满了自由的光辉 ★★★ 本文前置知识&#xff1a; 编译与链接的过程…

深度解读DeepSeek部署使用安全(48页PPT)(文末有下载方式)

深度解读DeepSeek&#xff1a;部署、使用与安全 详细资料请看本解读文章的最后内容。 引言 DeepSeek作为一款先进的人工智能模型&#xff0c;其部署、使用与安全性是用户最为关注的三大核心问题。本文将从本地化部署、使用方法与技巧、以及安全性三个方面&#xff0c;对Deep…

【详细解决】pycharm 终端出现报错:“Failed : 无法将“Failed”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。

昨天在终端一顿操作后突然打开pycharm时就开始报错&#xff1a; 无法将“Failed”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写&#xff0c;如果包括路径&#xff0c;请确保路径正确&#xff0c;然后再试一次。 所在位置 行:1 字符: 1 Failed to act…

【电路笔记】-D型触发器

D型触发器 文章目录 D型触发器1、概述2、主从D触发器3、使用D型触发器进行分频4、D触发器作为数据锁存器5、透明数据锁存器6、总结D型触发器是一种改进的置位-复位触发器,通过增加一个反相器来防止S和R输入处于相同的逻辑电平。 1、概述 D型触发器克服了基本SR NAND门双稳态电…

智慧共享杆:城市智能化管理的 “多面手”

智慧共享杆&#xff1a;城市智能化管理的 “多面手” 在智慧城市建设的进程中&#xff0c;智慧共享杆凭借其多功能与集约化的特性&#xff0c;逐渐成为城市基础设施建设领域的重点关注对象。它不仅革新了传统路灯杆的固有模式&#xff0c;更为城市的高效管理与便捷服务开创了全…

Microchip AN1477中关于LLC数字补偿器的疑问

最近在学习Microchip的AN1477关于LLC的功率级传递函数推导及数字补偿器设计&#xff0c;对其中的2P2Z数字补偿器的系数有一些困惑。我在MATLAB中运行了源程序提供的VMC_LLC.m文件&#xff0c;发现有些地方和AN1477中的结果不一致。现在把相关有疑问的地方列举出来&#xff0c;也…

云盘搭建笔记

报错问题&#xff1a; No input file specified. 伪静态 location / {if (!-e $request_filename) { rewrite ^(.*)$ /index.php/$1 last;break;} } location / { if (!-e $request_filename) { rewrite ^(.*)$ /index.php/$1 last; break; } } 设…