elisp片段(1)--文件保存时自动上传到远程FTP

本文介绍如何通过自动FTP功能实现文件的上传与管理,包括设置FTP程序地址、开启关闭自动FTP功能、设置远程和本地文件根目录以及本地路径转换为FTP远程路径的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

;;自动上传文件
;设置ftp程序的地址
;(setq ange-ftp-ftp-programe-name "d:/bin/ftp_xp.exe")
(defvar *is-auto-ftp* nil
  "是否自动ftp的标志")
(defun turn-on-auto-ftp()
  "设置打开自动ftp功能"
  (interactive)
  (setf *is-auto-ftp* t))
(defun turn-off-auto-ftp()
  "设置管理自动ftp功能"
  (interactive)
  (setf *is-auto-ftp* nil))
(defvar *remote-root* "/cnaps2@10.8.6.10:"
  "远程ftp的根目录地址,格式为/username@ip:/path/to/root/")
(defun set-remote-root(remote-root)
  "设置远程ftp的根目录地址"
  (interactive "s请输入远程ftp的地址,格式为/username@ip:/path/to/root/")
  (setf *remote-root* (file-name-as-directory remote-root)))
(defvar *local-root* "d:/workcvs/cnaps2/server/trunk/"
  "*标识本地文件的开始根目录,以这些路径开头的文件才会ftp到远程") 
(defun set-local-root(local-root)
  "设置本地文件的开始根目录"
  (interactive "s请输入本地文件的开始根目录")
  (setf *local-root* (file-name-as-directory local-root)))
(defun local-path-to-remote-path(local-path)
  "转换本地路径为ftp的远程路径"
  (replace-regexp-in-string (concat "^" (regexp-quote *local-root*)) *remote-root* local-path))
(global-set-key [f11] 'UpMeToFtp)
(defun UpMeToFtp()
  "Upload me to the ftp "
  (interactive)
  (if (and *is-auto-ftp* (string-prefix-p *local-root* buffer-file-name))
      (copy-file buffer-file-name (local-path-to-remote-path buffer-file-name) t)))
(add-hook 'after-save-hook 'UpMeToFtp)
(provide 'autoftp)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值