文件资源管理器Ranger的使用

在这里插入图片描述

配置文件

  • 将默认配置文件复制到该文件~/.config/range
$ ranger --copy-config=all
  • ranger 使用4个主要配置文件:
文件名描述
commands.py包含以Python编写的各种函数的实现,用于修改ranger’s行为
rc.conf用于设置各种选项并将按键绑定到功能
rifle.conf决定使用哪个程序打开哪个文件
scope.sh是一个shell脚本,用于生成各种文件类型的预览

宏指令

宏指令可以用在 command 命令中达到缩写命令的目的。

宏指令功能
%f高亮显示的文件
%d当前文件夹的路径
%s当前文件夹选择的文件
%t当前文件夹所有标记的文件
%c当前复制/剪切文件的完整路径
%p选择文件的完整路径

宏指令 %f、%d、%p 和 %s 有大写的变体,%F、%D、%P 和 %S,指下一个标记。为了表示一个特定的标记,可以在 % 和 字母 中间加一个数字,比如 %7s 指当前文件夹中第七个所选择的文件。
  %c 是唯一一个作用于当前文件夹以外的宏指令,所以你可以通过复制功能达到其他的目的。比如比较在两个在不同文件夹里的文件的不同:复制文件 A(键入 yy),然后切换到文件 B 的目录,并标记文件 B(键入 SPACE),最后键入 @,输入 shell: diff %c %s。对于文件路径的宏命令(%d、%c 和 %p)通常是转义了的,所以可以直接在 shell command 命令中使用。
  此外,如果你创建了使用 Key 的按键绑定,那么宏命令 %Key(或者 %Key0、%Key1、……)在 shell command 中就代表按下 Key 键几次。

文件选择

标记/取消标记:space
反选:v
视觉模式开启/关闭:V ,在视觉模式下,移动光标即可选择条目。也可以按 uV 或者 ESC 退出。
取消当前目录的全部标记:uv

黄色的 Mrk 符号位于终端右下角,表示此文件夹里有标记的文件。黄色的 Mrk 并不会因为切换目录而消失。

文件操作

复制:yy
剪切:dd
粘贴:pp
删除:dD

将不同目录的文件加入操作列表:ya
重命名:cw
在当前名称基础上重命名:A
类似A, 但是光标会跳到起始位置:I
向下翻一页:Ctrl+fPAGEDOWN
向上翻一页:Ctrl+bPAGEUP
向上翻半页:Ctrl+u或者K
向下翻半页:Ctrl+d或者 J
后退到上一个历史记录:H
前进到下一个历史记录:L

目录跳转

父目录上移:[
父目录下移:]
如果当前选中高亮的是是链接目录,直接跳到原目录内:g L
如果当前目录是链接目录内,直接跳到原目录:g l
跳转目录:g+其他

查看与编辑文件

操作说明
i 或者 F3 调用 Pager 查看文件与在终端中输入 pager + 文件名 一样。
E 或者 F4 调用默认编辑器编辑文件可在终端中输入 select-editor 选择默认编辑器。

书签

新建书签:m
打开书签:`
删除书签:um

标签

多标签即多窗口工作。可以在每个窗口来回切换。

新建标签:

  • g n
  • Ctrl+n

切换标签:

  • g tg T
  • TabShift+Tab
  • Alt+标签名

关闭标签:g cCtrl+w

链接

粘贴绝对路径的链接:pl
粘贴相对路径的链接:pL
硬链接:phl

排序

排序:o

名词描述
atimeaccess time,访问时间
basename基于文件名
ctimechange time,改变时间,文件的权限组别和文件自身数据被修改的时间
extension扩展名
mtimemodified time,修改时间

任务管理

在执行某些操作(比如复制一个大文件)时不能立即完成, 这在 ranger 中就是一个任务. 你可以停止, 启动某个任务, 也可以对某个任务设置优先级.

  • 打开/关闭任务视图:w
  • 在打开的任务视图中:
    • 终止一个任务:dd
    • 降低当前任务的优先级:J
    • 提升当前任务的优先级:K

预览

默认情况下,只能预览文本文件,但是你可以通过设定配置 use_preview_script 和 preview_files 为 true 来增加可以预览的文件类型。默认的预览脚本是 ~/.config/ranger/scope.sh,安装如下工具(每种类型只需要一个)就预览对应的文件类型,scope.sh 会自动调用它们:

工具预览文件类型安装
lynx
elinks
w3m
网页sudo apt install lynx
sudo apt install elinks
sudo apt install w3m
highlight
pygmentize
高亮代码sudo apt install highlight
pip install pygmentize
img2txt图片sudo apt install caca-utils
atool
bsdtar
unrar
7z
压缩包sudo apt install atool
sudo apt install libarchive-tools
sudo apt install unrar
sudo apt install p7zip
pdftotext
mutool
PDFsudo apt install poppler-utils
sudo apt install mupdf-tools
mediainfo
exiftool
媒体sudo apt install mediainfo
sudo apt install libimage-exiftool-perl
ffmpegthumbnailer视频缩略图sudo apt install ffmpegthumbnailer
fontimage字体sudo apt install fontforge
transmission-show种子sudo apt install transmission-cli

独立于 preview script,有一个通过将图像用字符画的形式直接绘制到终端中的预览功能。要启用此功能,将 preview_images 选项设置为 true 并将 preview_images_method 选项设置为一种图像预览模式(需要安装这些工具):

预览模式是否适用于 ssh注意设置 preview_images_method 为
w3m与 tmux 不兼容(尽管它可以工作)。w3m
iTerm2iTerm2 编译时必须添加 image preview support 选项。iterm2
urxvturxvt 编译时必须添加 pixbuf support 选项。此模式本质上是将图像暂时设置为终端背景,这样它将破坏以前设置的任何图像背景。urxvt
urxvt-full与 urxvt 相同,但使用整个终端窗口预览图片。urxvt-full

获取帮助

按下?时获取帮助,再使用按键选择帮助类型:

  • m: opens the man page for ranger(打开官方man手册)
  • k: opens a list of keybindings(打开按键绑定列表)
  • c: opens a list of available commands and descriptions(打开命令列表)
  • s: opens a list of settings and their current values(打开设置列表)

官方man手册网站:https://ranger.github.io/ranger.1.html

其他

查找:f
搜索:/
修改设置:z
显示隐藏文件:zh
打开/关闭文件预览功能:zp
打开目录预览功能:zP
过滤器(如过滤pdf文件, zf+pdf,回车):zf
在当前目录打开终端:S
目录展平::flag (level)
批量重命名:标记选中后,输入:bulkrename

参考

官方用户指南
http://www.mikewootc.com/wiki/linux/usage/ranger_file_manager.html
博客链接【推荐】
https://blog.csdn.net/xkfz008/article/details/7339530

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用 PyTorch 实现的深度学习优化器 Ranger 的代码: ```python import math from torch.optim.optimizer import Optimizer import torch.optim as optim class Ranger(Optimizer): def __init__(self, params, lr=1e-3, alpha=0.5, k=6, N_sma_threshhold=5, betas=(0.95, 0.999), eps=1e-5, weight_decay=0): defaults = dict(lr=lr, alpha=alpha, k=k, N_sma_threshhold=N_sma_threshhold, betas=betas, eps=eps, weight_decay=weight_decay) super().__init__(params, defaults) def __setstate__(self, state): super().__setstate__(state) def step(self, closure=None): loss = None if closure is not None: loss = closure() # Gradient centralization for group in self.param_groups: for p in group['params']: if p.grad is None: continue grad = p.grad.data if grad.is_sparse: raise RuntimeError('Ranger optimizer does not support sparse gradients') grad_data = grad.data if len(grad_data.shape) > 1: mean = torch.mean(grad_data, dim=tuple(range(1, len(grad_data.shape))), keepdim=True) var = torch.var(grad_data, dim=tuple(range(1, len(grad_data.shape))), keepdim=True) grad_data = (grad_data - mean) / (torch.sqrt(var) + group['eps']) p.grad.data = grad_data # Perform optimization step beta1, beta2 = group['betas'] N_sma_threshhold = group['N_sma_threshhold'] grad_ema_beta = 1 - beta1 sqr_ema_beta = 1 - beta2 step_size = group['lr'] eps = group['eps'] k = group['k'] alpha = group['alpha'] weight_decay = group['weight_decay'] for group in self.param_groups: for p in group['params']: if p.grad is None: continue grad = p.grad.data if grad.is_sparse: raise RuntimeError('Ranger optimizer does not support sparse gradients') state = self.state[p] # State initialization if len(state) == 0: state['step'] = 0 state['exp_avg'] = torch.zeros_like(p.data) state['exp_avg_sq'] = torch.zeros_like(p.data) state['SMA'] = 0 exp_avg, exp_avg_sq = state['exp_avg'], state['exp_avg_sq'] SMA = state['SMA'] state['step'] += 1 # Gradient centralization grad_data = grad.data if len(grad_data.shape) > 1: mean = torch.mean(grad_data, dim=tuple(range(1, len(grad_data.shape))), keepdim=True) var = torch.var(grad_data, dim=tuple(range(1, len(grad_data.shape))), keepdim=True) grad_data = (grad_data - mean) / (torch.sqrt(var) + eps) grad = grad_data bias_correction1 = 1 - beta1 ** state['step'] bias_correction2 = 1 - beta2 ** state['step'] step_size = step_size * math.sqrt(bias_correction2) / bias_correction1 # Compute exponential moving average of gradient and squared gradient exp_avg = beta1 * exp_avg + grad_ema_beta * grad exp_avg_sq = beta2 * exp_avg_sq + sqr_ema_beta * grad * grad # Compute SMA SMA_prev = SMA SMA = alpha * SMA + (1 - alpha) * exp_avg_sq.mean() # Update parameters if state['step'] <= k: # Warmup p.data.add_(-step_size * exp_avg / (torch.sqrt(exp_avg_sq) + eps)) else: if SMA > SMA_prev or state['step'] <= N_sma_threshhold: # If SMA is increasing, skip lookahead and perform RAdam step denom = torch.sqrt(exp_avg_sq) + eps p.data.add_(-step_size * exp_avg / denom) else: # Lookahead slow_state = state['slow_buffer'] if len(slow_state) == 0: slow_state['step'] = 0 slow_state['exp_avg'] = torch.zeros_like(p.data) slow_state['exp_avg_sq'] = torch.zeros_like(p.data) slow_state['SMA'] = 0 for key in state.keys(): if key != 'slow_buffer': slow_state[key] = state[key].clone() slow_exp_avg, slow_exp_avg_sq = slow_state['exp_avg'], slow_state['exp_avg_sq'] slow_SMA = slow_state['SMA'] slow_state['step'] += 1 # Gradient centralization grad_data = grad.data if len(grad_data.shape) > 1: mean = torch.mean(grad_data, dim=tuple(range(1, len(grad_data.shape))), keepdim=True) var = torch.var(grad_data, dim=tuple(range(1, len(grad_data.shape))), keepdim=True) grad_data = (grad_data - mean) / (torch.sqrt(var) + eps) grad = grad_data # Compute exponential moving average of gradient and squared gradient slow_exp_avg = beta1 * slow_exp_avg + grad_ema_beta * grad slow_exp_avg_sq = beta2 * slow_exp_avg_sq + sqr_ema_beta * grad * grad # Compute SMA slow_SMA_prev = slow_SMA slow_SMA = alpha * slow_SMA + (1 - alpha) * slow_exp_avg_sq.mean() # Update parameters if slow_state['step'] <= k: # Warmup pass else: if slow_SMA > slow_SMA_prev or slow_state['step'] <= N_sma_threshhold: # If SMA is increasing, skip lookahead and perform RAdam step denom = torch.sqrt(slow_exp_avg_sq) + eps p.data.add_(-step_size * slow_exp_avg / denom) else: # Lookahead p.data.add_(-step_size * (exp_avg + slow_exp_avg) / (2 * torch.sqrt((beta2 * exp_avg_sq + sqr_ema_beta * slow_exp_avg_sq) / (1 - bias_correction2 ** state['step'])) + eps)) # Weight decay if weight_decay != 0: p.data.add_(-step_size * weight_decay * p.data) return loss ``` 以上的代码实现了 Ranger 优化器,其中包括了 RAdam 和 LookAhead 的结合,以及动态学习率和权重衰减等技巧。可以将其应用于 PyTorch 中的深度学习模型训练中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值