各位使用什么进行文本替换的?

最近我放弃了行号,然后发现 evil 的 substitute 指令不再好用了。因为行号不再如之前般直观,所以输入诸如 :12,23s/just/example/gc 之类的指令时,我需要先通过 avy-goto-line 到达目标行(进行两次),获得行号后再执行以上命令。有点繁琐。

请问各位使用 avy 换行的是如何进行文本替换的?

1 个赞

M-% (query-replace) 之类的 Emacs 内置功能,Emacs 手册里有专门介绍如何搜索和替换。

—— 来自一个不用 Vim/Evil/Avy/行号 的 Emacs 用户。

我的

(global-set-key (kbd "C-x f")
		#'(lambda (from to)
		    (interactive "squery, then replace, from: \nsto: ")
		    (goto-char (point-min))
		    (query-replace-regexp from to)))
1 个赞

projectile-replace is an interactive autoloaded compiled Lisp function in ‘projectile.el’.

It is bound to M-m p R, C-c p r, SPC p R, .

(projectile-replace &optional ARG)

Replace literal string in project using non-regexp ‘tags-query-replace’.

With a prefix argument ARG prompts you for a directory on which to run the replacement.

Vim/Evil/Avy/行号 都不用,那么你进行buffer内跳转靠的是什么?

M-x swiper

swiper能限定在一块区域内吗?

(defun my-swiper (&optional p)
  (interactive "P")
  (if (not p)
      (swiper (concat (thing-at-point 'symbol)))
    (narrow-to-defun)
    (swiper (concat "\\b"(thing-at-point 'symbol)"\\b"))
    (widen)
    )
  )

你可以更改 narrow-to-defun 换成你想要的区域

1 个赞

我再次尝试了几遍,发现进入 visual 选好区域后,再进入ex模式,它自动帮你填充好了位置 :'<,‘>,

直接继续输入 subtitute 的命令就可以了 :'<,'>s/just/example/gc .

╮(╯▽╰)╭

这给了我灵感,也许我可以先在 visual 中选择好区域,然后通过 : 进行 narrow 并退出 visual 模式,以及进入 ex 模式,自动填充 :% , 最后输入想要的命令 。

你可以尝试不用evil

如果你喜欢evil的按键 可以用hydra模拟

那样你可以有好几个模式

安装了很多包后,最后发现,单个文档里面文本替换查找等功能,还是原装的好用。

原来用得不多可能还是和按键绑定相关。原来我用的evil。切了xah-fly-key后,它默认把isearch-forward,query-replace等常用功能绑到好按的按键了。我发现原来原生的操作使用起来是这么爽。哈哈哈。

我现在常用的:

  • isearch-forward
  • swiper
  • imenu
  • 上下键
  • 直接输入行号