当我运行find或 时locate,匹配的文件将填充标准输出,每行一个文件。下一步通常是我想打开这些文件之一。如果我不必输入整个文件路径,而只是可以以某种方式与搜索结果进行交互,这将更快、更有效。打开搜索结果中显示的文件的最快方法是什么?
类似于Open a result of `locate` with `vi` 中给出的解决方案,如何`locate` 多个文件并在 vim 中打开它们?, 以及 如何对“locate”命令的结果采取行动?需要输入一个相当长的第二个命令,这不像我想要的那么快。
相反,有没有办法,例如,自动将搜索结果中的每个文件分配给一个数字变量名称(s1 - sn),以便打开第一个结果我只需输入vi $s1?或者是使用fzf或fasd等模糊查找器来解决此问题的更好方法?
我已经有~/.screenrc一段时间了:
bind -c pasteline 1 eval copy 'stuff "-Y"' 'paste .'
bind -c pasteline 2 eval copy 'stuff "2-Y"' 'paste .'
bind -c pasteline 3 eval copy 'stuff "3-Y"' 'paste .'
bind -c pasteline 4 eval copy 'stuff "4-Y"' 'paste .'
bind -c pasteline 5 eval copy 'stuff "5-Y"' 'paste .'
bind -c pasteline 6 eval copy 'stuff "6-Y"' 'paste .'
bind -c pasteline 7 eval copy 'stuff "7-Y"' 'paste .'
bind -c pasteline 8 eval copy 'stuff "8-Y"' 'paste .'
bind -c pasteline 9 eval copy 'stuff "9-Y"' 'paste .'
bindkey ¬ command -c pasteline
Run Code Online (Sandbox Code Playgroud)
基本上,¬1从屏幕内输入,在光标上方插入第一行,¬2第二行等等。
在我的~/.Xdefaults,我也有:
XTerm.VT100.translations: #override\
Meta <KeyPress> /: dabbrev-expand()
Run Code Online (Sandbox Code Playgroud)
这让我们xterm完成(在Alt+/)屏幕上的内容(从光标位置向后看)。
使用zsh,在 内使用时screen,您可以执行以下操作:
copy-screen() {
screen -X eval copy 'stuff "-$ H\r"' 'writebuf .lastoutput'
killring=(${(Oaf)"$(<~/.lastoutput)"})
CUTBUFFER=$killring[1]
killring[1]=()
}
zle -N copy-screen
bindkey '\ec' copy-screen
Run Code Online (Sandbox Code Playgroud)
绑定Alt+C到该小部件,该小部件将光标上方的行存储到剪切缓冲区和终止环(您在模式中粘贴Ctrl+Y和循环的内容)。(以上假设是从您的主目录启动的)。Alt+Yemacsscreen
如果插入的文本需要引用(例如因为它包含空格或其他特殊的 shell 字符),您可以键入Alt+"forzsh来引用它。
例如,您刚刚运行:
$ find /usr/local -size +1M
/usr/local/lib/liblzma.a
/usr/local/share/doc/sudo/ChangeLog
/usr/local/share/perl/5.18.2/Unicode/Unihan/Definition.db
/usr/local/share/perl/5.18.2/Unicode/Unihan/RSKangXi.db
/usr/local/share/perl/5.18.2/Unicode/Unihan/IRG_TSource.db
/usr/local/share/perl/5.18.2/Unicode/Unihan/HanYu.db
/usr/local/share/perl/5.18.2/Unicode/Unihan/RSUnicode.db
/usr/local/share/perl/5.18.2/Unicode/Unihan/IRG_GSource.db
/usr/local/share/perl/5.18.2/Unicode/Unihan/IRGKangXi.db
/usr/local/share/perl/5.18.2/Unicode/Unihan/IRGHanyuDaZidian.db
Run Code Online (Sandbox Code Playgroud)
并且您想vim在上面的 sudo ChangeLog 上打开。使用第一种方法,您将键入:
vim ¬9
Run Code Online (Sandbox Code Playgroud)
使用第二种方法:
vim /我们Alt+/
并重复此操作,Alt+/直到您进入更改日志。
使用第三种方法:
vim Alt+CCtrl+YAlt+Y
并重复此操作,Alt+Y直到您进入更改日志。
最后一种方法可用于您的$s1查询。
不是存储在killring数组中,而是存储在数组中(如$s)并$s[1]用于第一行,$s[2]用于第二行......
copy-screen() {
screen -X eval copy 'stuff "-$ H\r"' 'writebuf .lastoutput'
s=(${(Oaf)"$(<~/.lastoutput)"})
}
zle -N copy-screen
bindkey '\ec' copy-screen
Run Code Online (Sandbox Code Playgroud)
该Alt+C存储的光标在上面的行s阵列。
无论如何,我们检索的是屏幕上显示的内容,这不一定与上一个命令输出的内容相同。例如printf 'a\bc \n'输出 5 个字节a,BS,,cSPC 和 LF,但只显示一个c.
| 归档时间: |
|
| 查看次数: |
501 次 |
| 最近记录: |