V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Ethkuil
V2EX  ›  程序员

分享下自己的简单 dotfiles,并想从大佬们的意见中学习

  •  
  •   Ethkuil ·
    Ethkuil · 311 天前 · 1920 次点击
    这是一个创建于 311 天前的主题,其中的信息可能已经有所发展或是发生改变。

    https://github.com/Ethkuil/dotfiles

    其实也没做太复杂的配置,我是倾向于尽量少做修改的。

    .vimrc 是直接照搬 MIT 的 Missing Semester 的。

    第 1 条附言  ·  310 天前
    [关于配置文件管理方案]
    我的配置管理是从管理 Windows GUI 软件散落在各处的各种配置文件(包括二进制文件)开始的,所以一开始就没考虑用 Git ,只是把配置文件搬到了“更安全”的 D 盘然后写个脚本软链接回去,再写个脚本根据命名约定调用所有配置脚本;管理 dotfiles 时就也是如此,只是单独建了个 dotnets 子目录。由于汇聚到了一起,所以用 Git 倒也不是问题。

    yadm ,相当于不局限于某个目录的 Git 。对「用 Git 仓库管理 dotnets 」确实是绝佳的。只是对 Windows 不太友好……

    dotbot ,使用一个 yaml 文件管理如何安装配置。我还是更喜欢「能单独配置某个软件」,因此不会切换过去;不过 dotbot 的参数还是挺值得参考的,覆盖了安装配置文件的常用操作。
    第 2 条附言  ·  309 天前

    改进了安装配置的脚本,支持跨平台、软链接前检测当前链接情况并相应处理(备份或跳过)。核心是这个 batch_relink.sh 脚本。

    写的过程挺折磨的,特别是 Windows 和 Unix 的路径风格差异真的把我整得头疼……不过全部优雅解决好后还是挺满足的,也算是收获颇丰。

    15 条回复    2024-01-12 00:15:43 +08:00
    kneo
        1
    kneo  
       311 天前 via Android
    你这组织结构……怎么安装啊……
    我记得 dotfiles 项目一般是直接把目录 clone 到.config 就能用,也有的是提供一个脚本入口。你这个我感觉就是自己随便起的名字,然后自己手动一个个 link ?
    Ethkuil
        2
    Ethkuil  
    OP
       311 天前
    @kneo 我其实写了自动化配置的脚本,不过没上传到仓库。

    我是把所有换电脑后需要保留的配置文件都放在 `D:\etc` 目录,每个程序的配置文件对应一个 `config` 程序完成 link 或 copy 的工作。然后顶层写了个 `config.ps1`,把子目录内所有名为 `config` 的脚本都调用一遍。
    Ethkuil
        3
    Ethkuil  
    OP
       311 天前
    我目前其实没做在 Linux 上的 bootstrap ,因为用不太上。不过我的 config 程序里的 link/copy 都是调用另一个自己封装的脚本实现的,所以要做成支持 Linux 的也不难。
    jeesk
        4
    jeesk  
       311 天前   ❤️ 1
    直接用 yadm 多省事。
    Ethkuil
        5
    Ethkuil  
    OP
       311 天前 via Android
    好像有点重点歪,我其实主要想分享 dotfiles 的内容而非组织方式的……

    我使用的是 Windows ,还有很多 GUI 软件的配置文件也需要管理,甚至有些配置文件不是纯文本格式。只有 2 个分区,C 盘放重装后无需保留的、D 盘放需保留的,所以一些配置文件是存在 D 盘然后软链接到相应目录的,包括 dotfiles 。
    bigtear
        6
    bigtear  
       310 天前
    @Ethkuil 最近重装系统我也搞了软链接,把 %APPDATA% 改成链接后遇到了 bug ,踩了个坑,其他的目录倒没啥问题
    ccqloveworld
        7
    ccqloveworld  
       310 天前
    推荐下 https://github.com/anishathalye/dotbot 自动化配置 dotfiles
    zzhaolei
        8
    zzhaolei  
       310 天前
    你这 dotfiles 也没什么内容可看啊。另外,我用 yadm 管理
    Ethkuil
        9
    Ethkuil  
    OP
       310 天前 via Android
    @bigtear 好奇,求细说。我也是软链接的
    ruidoBlanco
        10
    ruidoBlanco  
       310 天前   ❤️ 1
    我的。从第一个 commit 送上 GitHub ,已经 16 年了。

    https://github.com/roylez/dotfiles

    最开始自己软连接,后来用 stow ,所谓的专门的 dotfile 管理工具,不会用的,因为未必能有我的 repo 活得长。

    git 可以长久活下去,stow 也行。
    skt041959
        11
    skt041959  
       310 天前
    ```
    inoremap <Left> <ESC>:echoe "Use h"<CR>
    inoremap <Right> <ESC>:echoe "Use l"<CR>
    inoremap <Up> <ESC>:echoe "Use k"<CR>
    inoremap <Down> <ESC>:echoe "Use j"<CR>
    ```
    如果你 vim 只是拿来临时改改配置的话,就不要这样给自己找麻烦了
    bigtear
        12
    bigtear  
       310 天前
    @Ethkuil 有的软件使用了 Win32 转制 UWP 的 SDK ,这个 SDK 不支持软链接,现象是软链接了 %APPDATA% 之后这种软件都打不开了,显示参数错误,比如 Windows 终端、NanaZip 这种软件打开就显示参数错误。

    改成不链接了就能正常使用了

    然后还有个坑是我的库文件夹没有用系统自带的移动库文件夹位置设置,是直接链接到了用户文件夹里取代原有文件夹,有的软件会出一些奇奇怪怪的 Bug ,比如 vscode 的 go 插件运行会不正常;

    有个预期之内的不大的问题是拷贝文件会让 NTFS 文件系统以为是跨盘拷贝,而不是直接一个硬盘上操作,不能直接秒完成了。

    临时文件夹我第二次修改到其他位置,第一次的位置还是有东西在往里面写入,重启什么的还是有,好像是安装的各种 SDK 的安装包位置被 Windows 硬记录下来了了,经常自动下载,头疼
    bigtear
        13
    bigtear  
       310 天前
    @bigtear 临时文件夹的文件名最好不要用奇奇怪怪的字符,放到纯英文路径最好,之前用 @Temp 有的程序会出 bug
    Ethkuil
        14
    Ethkuil  
    OP
       310 天前
    @skt041959 hh 我直接复制了 MIT 的 Missing Semester 里提供的配置,感觉挺适合我的。其实没关系,我 Vim 的基本功能已经用得很熟了,确实用不到方向键。
    Ethkuil
        15
    Ethkuil  
    OP
       310 天前
    简单重构了下(扁平化),并把自动完成配置的 `config.bat` 也上传上去了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   969 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 22:57 · PVG 06:57 · LAX 14:57 · JFK 17:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.