小编Ame*_*ina的帖子

比较 Emacs 中的目录

我正在试验ediff-directories,但我不确定我是否正确使用它。

我在文档中读到,一旦我向 提供了两个目录ediff-directories,如果我按下==Emacs 就会递归地比较它们。

但是,如果我按,==我只会=在我运行命令的级别上得到带有符号的文件夹(意味着这两个文件夹具有相同的内容)。如果我想查看文件=夹层次结构中哪些文件夹在更深层次上有标志,我需要==在每个级别重新运行命令。

我如何告诉 emacs 一直递归到叶子,以便我可以看到directory difference buffer(可通过键盘命令访问D)中的所有差异?

如果有人知道有关如何使用的教程ediff-directories(官方文档除外),我会非常感兴趣。


此外,如果我想退出会话组(在一个级别上比较文件夹),但我为更深层次打开了会话,如果我按下q(退出此会话组),Emacs 会抱怨以下消息:

此会话组有活动会话---无法退出

如何退出会话组而不一一退出子会话?

diff emacs

18
推荐指数
2
解决办法
8158
查看次数

在 tmux 和剪贴板之间复制/粘贴文本选择

我运行的是最新版本的TMUX的(从git仓库)和XCLIP(0.12),并且我希望能够使用类Emacs键盘绑定在文本内到处移动copy-mode,复制(M-w)选择到剪贴板,将 ( C-y) 从/到复制缓冲区粘贴到剪贴板。

到目前为止,我已经能够粘贴文本C-y,并copy-mode使用类似 Emacs 的键盘绑定移动,但我仍然无法从 tmux 缓冲区复制文本(例如在copy-mode

我发现这个线程用于将整个缓冲区复制到剪贴板(反之亦然),但它似乎对我不起作用。

此外,在tmux-users邮件列表中,我被告知最近版本的 tmux(仅在 git 存储库中)提供了一个名为copy-pipe. 手册页说明了有关此命令的以下内容:

一个命令接受一个参数,copy-pipe,它复制选择并将其通过管道传递给命令。例如,以下将绑定 'C-q' 以将选择复制到 /tmp 以及粘贴缓冲区:

       bind-key -temacs-copy C-q copy-pipe "cat >/tmp/out"
Run Code Online (Sandbox Code Playgroud)

看起来copy-pipe部分地用于将选择通过管道传递给另一个命令。此描述和命令中似乎也有一些拼写错误(什么是temacs-copy?)

无论哪种方式,我想做的是:

复制:

  1. 进入复制模式
  2. 使用 Emacs 导航命令移动到我想要复制的文本(即C-fC-bM-fM-bC-aC-e等以移动光标)。这些都没有前缀
  3. 选定的文本复制到与剪贴板:M-w无前缀要么)

粘贴:

  1. 我希望能够输入C-y …

terminal tmux clipboard

18
推荐指数
3
解决办法
2万
查看次数

像在 Emacs 中一样在 Bash 中复制和设置标记?

我希望能够使用 Emacs 默认使用的相同键盘绑定(即使用C-spacefor set-markM-w复制文本、C-yM-y粘贴它等)在 Bash 的命令行中复制和粘贴文本。

GNU Bash的文件说,猛砸附带了一些默认设置了这些键绑定。

例如,yanking ( C-y) 默认在我的终端上工作。但是,我无法使set-markcopy命令起作用,并且默认情况下它们似乎没有绑定到任何键。

通常,用户定义自己的键绑定的方式是将它们添加到.inputrc. 所以我在文档中查看并发现了以下 bash 函数,我认为这些函数可以帮助我定义我想要的类似 Emacs 的行为(即set-markwithC-spacecopywith M-w)。

copy-region-as-kill ()
Run Code Online (Sandbox Code Playgroud)

将区域中的文本复制到终止缓冲区,以便立即将其拉出。默认情况下,此命令是未绑定的。

set-mark (C-@)
Run Code Online (Sandbox Code Playgroud)

将标记设置为点。如果提供了数字参数,则标记设置为该位置。

如果我理解正确的话,上面的意思copy-region-as-kill是默认情况下不绑定到任何键盘序列,而默认情况下set-mark绑定到C-@

C-@在我的终端上试过,但我认为它没有运行,set-mark因为当我移动光标时我没有看到任何突出显示的文本。无论如何,我尝试将键盘绑定(M-wC-)添加到my 中的函数 copy-region-as-killset-mark以上.inputrc,然后使用 重新加载它C-x C-r,但这不起作用。我知道我的其他条目正在.inputrc工作,因为我在其中定义了其他用户定义的键绑定。 …

bash line-editor inputrc

17
推荐指数
1
解决办法
3133
查看次数

稳健地构建路径

假设我在 shell 脚本中有几个变量(例如在 zsh 中):

FOLDER_1, FOLDER_2, etc.
Run Code Online (Sandbox Code Playgroud)

这些变量指的是从/. 例如,如果我有一条路径/home/me/stuff/items

变量将是:

FOLDER_1='home'
FOLDER_2='me'
FOLDER_3='stuff'
Run Code Online (Sandbox Code Playgroud)

现在,假设我想通过连接变量来重建相应的路径。一种可能的方法是按如下方式构建路径:

PATH=$FOLDER_1/$FOLDER_2/$FOLDER_3/
Run Code Online (Sandbox Code Playgroud)

但是,假设某些变量FOLDER_i带有尾随正斜杠,而其他变量则没有(我们不知道是哪个),例如

FOLDER_1='home'
FOLDER_2='stuff/'
FOLDER_3='items'
Run Code Online (Sandbox Code Playgroud)

我的问题是:我如何才能稳健地构建路径?(例如避免双斜线,并在需要的地方添加它们)。

我认为一种方法是/在变量对之间添加always ,然后使用 删除任何重复项sed,但我无法使其工作(我不确定我/是否在 中正确处理sed)。

另外,我是在重新发明轮子吗?(即是否有任何内置功能已经做到了这一点?)。

最后,如果变量在一个数组中,例如FOLDERS,是否可以在不循环的情况下做到这一点?(或者,通过循环但不知道FOLDERS数组中有多少)。

shell-script

17
推荐指数
2
解决办法
2万
查看次数

查找两个特定字符或字符串之间的文本

说我有这样的行:

*[234]*
*[23]*
*[1453]*
Run Code Online (Sandbox Code Playgroud)

where*代表任何字符串(除了形式为 的字符串[number])。如何使用命令行实用程序解析这些行并提取括号之间的数字?

更一般地,它的这些工具cutsedgrepawk将适合这样的任务?

text-processing regular-expression

17
推荐指数
2
解决办法
9万
查看次数

来自 Windows 的最快远程 X

我有以下设置:

|-----------------|                          |---------------|
|   Windows       |     LAN (or VPN)         |    Linux box  |
| (local machine) | <-------------------->   |               |
|-----------------|                          |---------------|
Run Code Online (Sandbox Code Playgroud)

我想从我的 Windows 机器上以最小的延迟访问 Linux 机器上的 Emacs 和 Eclipse 窗口。

我的选择似乎是:

  • 虚拟网络
  • 在我的本地 Windows 主机上使用 Virtualbox 和 Ubuntu 虚拟化 Linux 来宾,然后ssh -X从它到 Linux 机器(这是一个讨论快速 ssh X 隧道配置的线程)
  • cygwin 与 X 服务器和ssh -X远程框。

目前我使用 RealVNC,但我注意到一些显着的延迟。在做了一些研究之后,我在维基百科上阅读了以下内容:

VNC 协议是基于像素的。尽管这带来了极大的灵活性(即可以显示任何类型的桌面),但它通常不如对底层图形布局有更好理解的解决方案(如 X11 或 Windows 远程桌面协议)效率低下

这让我想知道, 要从本地 Windows 机器以最快的速度访问 …

ssh virtual-machine windows x11

17
推荐指数
2
解决办法
3万
查看次数

使用多行语法向 PATH 添加路径

据我了解,向PATH环境变量添加路径的常用方法是连接由:字符分隔的路径。

例如,如果我想向它添加三个路径/my/path/1/my/path/2并且/my/path/3,我必须按如下方式进行:

PATH=$PATH:/my/path/1:/my/path/2:/my/path/3
Run Code Online (Sandbox Code Playgroud)

这不容易阅读。

有没有办法使用多行语法定义添加PATH变量的路径?也许使用数组?我正在寻找这样的东西:

PATH = 
$PATH
/my/path/1
/my/path/2
/my/path/3
Run Code Online (Sandbox Code Playgroud)

如果有特定于 shell 的有趣解决方案,我正在 zsh 中寻找解决方案。

zsh path environment-variables

16
推荐指数
4
解决办法
1万
查看次数

列出目录中的 X 个随机文件

有没有办法使用标准 Linux 命令从目录中列出一组 30 个随机文件?(在zsh)

此处描述的最佳答案对我sort不起作用(无法识别该选项-R

shell zsh files

16
推荐指数
2
解决办法
6990
查看次数

tmux:将键重新映射到左/右/上/下的窗格

Tmux 允许使用Ctrl-b+在窗格中移动(?, ?, ?, ?)

我想将其重新映射到:

Ctrl-b+ Ctrl-(l, j, i, k)

作为参考,按键的布局l,j,i,k与方向键的布局类似,但在不移动手的情况下更容易打字。

我一直在编辑一些东西.tmux.conf,但我找不到有关如何重新绑定上述命令的信息。

tmux

16
推荐指数
2
解决办法
2万
查看次数

头/尾的否定参数

这个问题的变体肯定在不同的地方被问过几次,但我试图M从文件中删除最后一行而没有运气。

第二个最投票的答案这个问题建议做以下摆脱在文件的最后一行:

head -n -1 foo.txt > temp.txt
Run Code Online (Sandbox Code Playgroud)

但是,当我在 OSX & Zsh 中尝试时,我得到:

head: illegal line count -- -1
Run Code Online (Sandbox Code Playgroud)

这是为什么?我如何删除M 最后一个第一个 N给定文件的行?

osx options shell-script tail head

16
推荐指数
1
解决办法
2万
查看次数