浏览代码

Fix cp plugin completion and refactor (#5427)

* cp plugin: change cpv to function so that completion works

* cp plugin: show numbers in units of 1024 (K,M,G,T)

Use `-h` level (3): output numbers in units of 1024.
See the manpage of rsync for more information.

* cp plugin: add a README file

* cp plugin: recurse directories

* cp plugin: remove `--` to separate files from options

This has some undesired effects, like having `cpv --help` be a file
not found error.

Use `--` yourself if you need it (which you generally don't):

```zsh
cpv -- -some-file-with-hyphens.txt /tmp
```

Added this same info to the README.
Marc Cornellà 7 年之前
父节点
当前提交
81981ef248
共有 2 个文件被更改,包括 36 次插入14 次删除
  1. 32 0
      plugins/cp/README.md
  2. 4 14
      plugins/cp/cp.plugin.zsh

+ 32 - 0
plugins/cp/README.md

@@ -0,0 +1,32 @@
+# cp plugin
+
+This plugin defines a `cpv` function that uses `rsync` so that you
+get the features and security of this command.
+
+To enable, add `cp` to your `plugins` array in your zshrc file:
+
+```zsh
+plugins=(... cp)
+```
+
+## Description
+
+The enabled options for rsync are:
+
+- `-p`: preserves permissions.
+
+- `-o`: preserves owner.
+
+* `-g`: preserves group.
+
+* `-b`: make a backup of the original file instead of overwriting it, if it exists.
+
+* `-r`: recurse directories.
+
+* `-hhh`: outputs numbers in human-readable format, in units of 1024 (K, M, G, T).
+
+* `--backup-dir=/tmp/rsync`: move backup copies to "/tmp/rsync".
+
+* `-e /dev/null`: only work on local files (disable remote shells).
+
+* `--progress`: display progress.

+ 4 - 14
plugins/cp/cp.plugin.zsh

@@ -1,14 +1,4 @@
-#Show progress while file is copying
-
-# Rsync options are:
-#  -p - preserve permissions
-#  -o - preserve owner
-#  -g - preserve group
-#  -h - output in human-readable format
-#  --progress - display progress
-#  -b - instead of just overwriting an existing file, save the original
-#  --backup-dir=/tmp/rsync - move backup copies to "/tmp/rsync"
-#  -e /dev/null - only work on local files
-#  -- - everything after this is an argument, even if it looks like an option
-
-alias cpv="rsync -poghb --backup-dir=/tmp/rsync -e /dev/null --progress --"
+cpv() {
+    rsync -pogbr -hhh --backup-dir=/tmp/rsync -e /dev/null --progress "$@"
+}
+compdef _files cpv