当前位置: 首页 > news >正文

[emacs] CUA的矩形块操作很给力啊

原始矩形块模式

emacs以C-x r开头的命令来进行矩形操作。先用C-space或者C-@设一个mark,移动光标到另一点,用以下命令进行列操作:

C-x r k 剪切一个矩形块
C-x r y 粘贴一个矩形块
C-x r o 插入一个矩形块
C-x r c 清除一个矩形块(使其变成空白)
C-x r t 在选定区域的所有列前插入样的字符

cua-mode支持的可视化块模式

除了emacs本身支持的列模式外,emacs还可以通过cua-mode支持一种可视化的列模式。在cua-mode下,按[C-return]会进入cua rectangle模式。在这个模式下可以通过鼠标点击确认起点,然后通过光标键来选中一个rect范围,这个rect会用另外的颜色显示出来。

cua-mode下可以用以下命令进行列操作:

直接输入字符: 在每行前(或后)都插入这个字符
[M-a]: 将rect中的文字左对齐
[M-b]: 用空格(tabs或者spaces)替换所有rect中的字符
[M-c]: 去掉所有行左侧的空格
[M-f]: 用单个字符替换所有rect中的字符(提示输入一个字符)
[M-i]: 对每行中第一个找到的数字进行加1操作(自动把0x开头的当作十六进制数字)
[M-k]: 剪切rect
[M-l]: 把rect中的内容全部转换为小写
[M-m]: 拷贝rect
[M-n]: 用一串自增的数字替换rect中的每一行(这个功能可以用来给每行编号)
[M-o]: rect的内容右移,选中的rect用空格填充
[M-r]: 用字符串替换符满足正则表达式的字符串
[M-R]: 上下反转
[M-s]: 把rect中的每一行替换为一个字符串(提示输入)
[M-t]: 把rect整个替换为一个字符串(提示输入)
[M-u]: 把rect中的内容全部转换为大写
[M-|]: 对rect执行一个shell命令
 
还有一些其他的命令可以直接看cua-base.el(emacs22之后已经自带。另无意中发现一个阅读package说明的方法: M-x finder-commentary)。

Emacs用户手册里面对CUA介绍得比较简单,可到原网站阅读说明 http://www.cua.dk/cua.html

下面这段视频是我从vimeo转到土豆网的:

 

 



改进: 用鼠标来选择矩形块

看了一下cua-rect里面的代码,发现对鼠标有一些支持,但不是太好用(得先用C-return激活块模式,然后用mouse-1确定起点,mouse-3确定终点并拷贝)

 

简单地尝试了一下,改成如下方式: 第一次点击确定起点,第二次点击确定终点。为了方便,使用了hyper这个modifier key。

(require 'cua-rect)
(defun hkb-mouse-mark-cua-rectangle (event)
(interactive "e")
(if (not cua--rectangle)
(cua-mouse-set-rectangle-mark event)
(cua-mouse-resize-rectangle event)))
(global-set-key (kbd "<H-mouse-1>") 'hkb-mouse-mark-cua-rectangle)
(define-key cua--rectangle-keymap (kbd "<H-mouse-1>") 'hkb-mouse-mark-cua-rectangle)

 

 



转载于:https://www.cnblogs.com/bamanzi/archive/2011/02/28/emacs-cua-rectangle-cool.html

相关文章:

  • Rsync滚动校验算法
  • 中国宅客网一周年 晒照片赢大奖
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库
  • 数据源绑定控件
  • 系统动力学软件vensim学习系列
  • 运用 GConf Cleaner 整顿 GConf
  • Qt/Embedded嵌入式开发环境的建立
  • 在嵌入式Linux情形下制造QPF字库的举措
  • Xvidcap:屏幕录像机
  • GrubED-Grub 编辑脚本
  • Google Earth 4.3 beta 界面字体增年夜术
  • Oracle根蒂根基知识
  • 使用SQL语句中between and查询数据出错
  • 网络编程[31]
  • 设置数据库兼容级别的两种方法
  • [译]前端离线指南(上)
  • CentOS 7 防火墙操作
  • cookie和session
  • ES6 学习笔记(一)let,const和解构赋值
  • GDB 调试 Mysql 实战(三)优先队列排序算法中的行记录长度统计是怎么来的(上)...
  • javascript数组去重/查找/插入/删除
  • Java到底能干嘛?
  • JS字符串转数字方法总结
  • PermissionScope Swift4 兼容问题
  • Redis在Web项目中的应用与实践
  • spark本地环境的搭建到运行第一个spark程序
  • SpiderData 2019年2月25日 DApp数据排行榜
  • VUE es6技巧写法(持续更新中~~~)
  • web标准化(下)
  • 代理模式
  • 给新手的新浪微博 SDK 集成教程【一】
  • 猴子数据域名防封接口降低小说被封的风险
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 算法---两个栈实现一个队列
  • 微信支付JSAPI,实测!终极方案
  • 学习笔记:对象,原型和继承(1)
  • 【运维趟坑回忆录 开篇】初入初创, 一脸懵
  • 7行Python代码的人脸识别
  • 仓管云——企业云erp功能有哪些?
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • ###STL(标准模板库)
  • #include<初见C语言之指针(5)>
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • #我与Java虚拟机的故事#连载14:挑战高薪面试必看
  • (4)logging(日志模块)
  • (搬运以学习)flask 上下文的实现
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (二十三)Flask之高频面试点
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (免费领源码)Java#ssm#MySQL 创意商城03663-计算机毕业设计项目选题推荐
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (一)基于IDEA的JAVA基础12
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)