vim 的替换
我也曾尝试过把 notepad.exe 替换为 vim ,用的也是硬链接的方式,https://www.howtogeek.com/howto/12617/how-to-replace-notepad-in-windows-7/
但是遇到以下问题:
notepad 的打开文件的方式,notepad.exe {文件路径}
这里的 {文件路径} 只能是一个文件的路径,如 c:/users/test.txt
替换为 vim 后,多数情况下都正常,只有当路径中含有空格时,vim 会将后面的参数看作以空格分开的多个文件。
# 创建 "a b.txt"
% notepad a b.txt
# 但是对于 vim ,则是创建 a, b.txt 两个文件
% vim a b.txt
由于 notepad 后面的 {文件路径} 只能有一个,我猜测,肯定是系统调用 notepad.exe 时,没有给后面的参数加上双引号。
我尝试过用 python 调用 vim 再打开 txt.
from sys import argv # 读取命令行参数
from os import system # 执行 cmd 命令
argvs = argv[1:] # 得到除第 0 个参数外的所有参数
f_path = ' '.join(argvs) # ' '.join() 空格, 得到目标文件的路径
if f_path == '': # 如果给出的路径为空,则创建新文件
input('将直接打开 vim, 按回车键继续')
system('vim')
else: # 编辑指定文件
cmd = 'vim ' + '"' + f_path + '"'
system(cmd)
我将上面的代码编译并重命名为 notepad.exe 并替换真正的 notepad.exe,成功了。
所以我的猜测是对的,在传给 notepad.exe 文件路径时,后面的 {文件路径} 没有用引号括起来,而是 notepad.exe 自己括起来再打开。
以上可以实现右键菜单中的 Edit 打开文件也使用 vim
命令行使用命令修改文件类型与打开方式, assoc 与 ftype
这个思路很好。
我找到一个批量设置的方法:
举例:
替换 .txt 的默认程序
# 查看 .txt 绑定的文件类型
% assoc .txt
.txt=txtfile
# 查看 txtfile 的对应的打开程序
% ftype txtfile
txtfile=%SystemRoot%\system32\NOTEPAD.EXE %1
# 修改 txtfile 对应的打开程序
% ftype txtfile="C:\2.vim_portable\gVimPortable.exe" "%1"
txtfile="C:\2.vim_portable\gVimPortable.exe" "%1"
以上能实现双击 .txt 使用 vim 打开,但是,不能实现右键菜单中的 Edit 也使用 vim。