请教一个问题, 我下载用 spacemacs 是 hybrid 模式, 但是每到复制粘贴的时候就不得不切回 vim 的命令模式,用 “yy“ 和 ”p”来 复制粘贴,然后再切换 vim 的编辑模式继续写代码,但是这样来回切换比较麻烦。
但是我在网上搜了一下,感觉 emacs 复制粘贴没有 vim 这么方便,先要选中区域,再复制,再粘贴。 大家有没有什么好用的简洁的命令啊?
谢谢
请教一个问题, 我下载用 spacemacs 是 hybrid 模式, 但是每到复制粘贴的时候就不得不切回 vim 的命令模式,用 “yy“ 和 ”p”来 复制粘贴,然后再切换 vim 的编辑模式继续写代码,但是这样来回切换比较麻烦。
但是我在网上搜了一下,感觉 emacs 复制粘贴没有 vim 这么方便,先要选中区域,再复制,再粘贴。 大家有没有什么好用的简洁的命令啊?
谢谢
Insert 模式可以这样设置,这两个键也是 emacs 默认设置:
(define-key evil-insert-state-map (kbd "C-y") #'yank)
(define-key evil-insert-state-map (kbd "M-w") #'kill-ring-save)
不知道 hybrid 对应哪个 map。
粘贴只要一个命令就够了,重要的是删除。 C-k 删除整行,M-k删除整句。M-d 删除一个词。 你应该把自带的教程先过一遍,然后具体该怎么编辑全都有介绍。
来自李杀网(我好像有点修改),没有选中就默认复制和剪切一行
;;;###autoload
(defun xah-copy-line-or-region ()
"Copy current line, or text selection.
When called repeatedly, append copy subsequent lines.
When `universal-argument' is called first, copy whole buffer (respects `narrow-to-region').
URL `http://ergoemacs.org/emacs/emacs_copy_cut_current_line.html'
Version 2017-03-17"
(interactive)
(let (-p1 -p2)
(if current-prefix-arg
(setq -p1 (point-min) -p2 (point-max))
(if (use-region-p)
(setq -p1 (region-beginning) -p2 (region-end))
(setq -p1 (line-beginning-position) -p2 (line-end-position))))
(if (eq last-command this-command)
(progn (progn ; hack. exit if there's no more next line
(end-of-line) (forward-char) (backward-char))
;; (push-mark (point) "NOMSG" "ACTIVATE")
(kill-append "\n" nil)
(kill-append (buffer-substring-no-properties (line-beginning-position) (line-end-position)) nil)
(message "Line copy appended"))
(progn (kill-ring-save -p1 -p2)))))
;;;###autoload
(defun xah-cut-line-or-region ()
(interactive)
(if current-prefix-arg
(progn ; not using kill-region because we don't want to include previous kill
(kill-new (buffer-string)) (delete-region (point-min) (point-max)))
(progn (if (use-region-p)
(kill-region (region-beginning) (region-end) t)
(kill-region (line-beginning-position) (line-beginning-position 2))))))
你如果还是觉得麻烦可以自己定制自己需要的功能。。。 几乎没有什么别的编辑器的功能是完全实现不了的。。。
比如可以筛选kill-ring, 可以在复制完之后顺便打印一下,可以重复剪切,把内容 append 到一起。。。等等。
我觉得如果vim要实现以上这些功能的话可能没有Emacs这么直观。
我是想复制,不是删除
不是写了吗,复制也有啊。。。
既不想切换状态,又不想选中区域,就得设置快捷键来完成这一系列动作。yy 有了一键击中的替代方案,那么其它操作呢?或者沿用 vi 的习惯:C-o 临时进入 normal 模式,这时可以做的就不止 yy 了。
为了达到 yy 的效果专门设置一个快捷键,我认为有点浪费,而且增加负担:因为要记住 yy 这个特例。
至于粘贴,建议还是绑定到 C-y。
hi 请问在org mode里有没有复制当前光标所在行但复制最前面的星号的命令
看看 easy-kill, M-w 直接复制一行,还可以 + - w s f b,好用到爆。vim默认的哪有这么好用啊?
我喜欢移动即选择,这样就没有这些问题了。
不过 emacs 的话,完全可以跟据喜好搞成自己想要的样子。
谢谢大佬们 我少打了个字 想问在org mode里有没有复制当前光标所在行但不复制最前面的星号的命令
有没有听说过,C-c C-v教会?
复制粘贴教会 (瑞典语:Missionerande Kopimistsamfundet,英语:Missionary Church of Kopimism),又称 拷贝教 、 复制共享教 (Kopimism),由瑞典人以撒克·葛森(Isak Gerson)创立,在2012年被瑞典政府接受为合法教会。它的宗旨在于反对反盗版法案,支持各种数字文件的复制与下载权利,他们主张网络版权法案侵犯了言论自由。拷贝教成员认为,分享文件是一种宗教服务,对该教而言,透过计算机键盘复制和粘贴的Ctrl-C和Ctrl-V动作是一种神圣的象征。
大神 用这个操作复制不来东西啊
能不能把远程(ssh)Emacs里选中的内容复制粘贴到我本地app(例如微信)?
下面这个只能用在本地的Emacs
(defun copy-region (start end)
"Copy the region to Mac pastboard"
(interactive "r")
(shell-command-on-region start end "pbcopy"))
可以考虑借助 tmux
可以看看这种思路行不行(没有真正验证过)。 需要特定支持osc 52 的终端才行 比如macos的 iterm2 ,xterm等
printf "\033]52;c;$(printf "%s" "blabla" | base64)\a"
可以通过这条命令验证你的终端支不支持osc52 ,如果支持,“blabla”会被复制到你的剪贴板。 当然有可能你的终端需要勾选某个选项后才会开启。
呃,还没用过tmux,只用了 screen
你说的是 screen 没有的功能吗?
不太了解 screen ,tmux 有一套接口可让其他应用和他交互。