一直在使用 vim的 esc y p
复制当前行,
有没有什么在插入状态下更好的按键设计复制当前行,这个问题同适于用 emacs
一直在使用 vim的 esc y p
复制当前行,
有没有什么在插入状态下更好的按键设计复制当前行,这个问题同适于用 emacs
我一直用C-a C-k C-y(
短距离内把一行上下移动,我抄了一个函数绑定到了M-上下,挺方便的
C+S Backspace, 再C-y
y p 不够语义化……
如果 p 代表整行,那么 l 代表什么?又如何复制光标之后的部分呢?
我有一段时间没用 Vim 了,虽然以前用了很久,但习惯了 Emacs 的快捷键一段时间后感觉非常自然。
我用了很久的c-a c-k c-y
,有一天终于受不了了,一搜索发现并不需要专门绑定按键,就用默认的m-w,c-w
,判断一下没有选中任何文本时m-w,c-w
的操作就是针对当前行即可。
(global-set-key "\M-w"
(lambda ()
(interactive)
(if mark-active
(kill-ring-save (region-beginning)
(region-end))
(progn
(kill-ring-save (line-beginning-position)
(line-end-position))
(message "copied line")))))
;;//blog.csdn.net/ruglcc/article/details/7875631
(global-set-key "\C-w"
(lambda ()
(interactive)
(if mark-active
(kill-region (region-beginning)
(region-end))
(progn
(kill-region (line-beginning-position)
(line-end-position))
(message "killed line")))))
内置 duplicate-dwim 函数了解一下~
支持参数、支持 region (包括列式/竖向 region),默认复制整行并保持光标所在行列。
找不到呀,哪个包的?
Emacs 内置的函数啊,不过文档里没写是哪个版本加入的。
duplicate-line duplicate-line/duplicate-line.el at 5abe4b81fa1618212938eb2e9b153975c34c11f1 · manateelazycat/duplicate-line · GitHub
我一直以为这个函数是外部引入的,原来在 misc.el, 学习了~
忘了是在别人配置里学到的还是自己翻 Emacs NEWS 看到的了,嘿嘿。
是29引入的,怪不得我没有
VIM的复制当前行不是esc回到Normal然后按yy吗?
(global-set-key [remap kill-ring-save] 'easy-kill)
(global-set-key [remap mark-sexp] 'easy-mark)
使用 M-w
有惊喜。如果要复制并粘贴,用内置的duplicate-dwim
最方便。
一般就是C-o y y
很久很久之前有人写的几行配置抄来用。用alt y 复制当前行。用了很久。
后来整理配置,没copy过来这段配置。就改为了:先选择当前行,然后再alt y复制
用的是purcell写的插件
C-a C-K M-w
删除当前行用: C-S-<backspace>
都是默认的
看了那么多回复,我觉得模式编辑下,要么就采用上述一种方式,赋予一个好记的快捷键;要么就别优化了,总要退出插入模式,复制选中一行的操作。两种方式都差不了太多,一个省步骤,另一个符合操作逻辑习惯。
高度自定义意味着高度的心智负担,我现在就是尽量用 Emacs 已有的功能,并且在插件中尽量少的使用 keymap 并倾向于 [remap emacs-command]
到插件的 command。