更改Git-Bash中的目录:在Windows机器上使用MINGW64中的Windows样式目录地址

时间:2017-07-16 23:15:15

标签: windows vim git-bash

问题:

git-bash.exeMINGW64可识别cd个命令,这些命令的地址以/Drive_Name/Folder1/Subfolder1的形式提供。更改为Windows计算机用户的主目录的示例是:cd /c/users/USERNAME

  • 是否可以使用以下语法? cd c:\users\USERNAME 注意,目录地址以“本机”格式给出:Windows操作系统识别的语法。

  • 或者,有没有办法在粘贴到Git-bash窗口时自动将所有反斜杠更改为正斜杠?

背景

我每天都在使用git-bash.exe:拉动并推送到Github,运行latexmk来编译我的*.tex文档和SSH我的Linux机器。在所需的目录位置快速启动git-bash.exe进程会很不错。而且,在Windows操作系统上,以C:\users\USERNAME\project形式获取地址是默认设置。

git-bash.exe喜欢的语法分类:

  • 格式1:GNU原生格式--- /c/users/USERNAME;
  • 格式2:半Windows操作系统格式==>使用正斜杠作为分隔符--- c:/users/USERNAME;
  • 格式3:半Windows操作系统格式==>使用两个反斜杠作为分隔符--- c:\\users\\USERNAME(信用:@VonC

或者(待定解决方案)

有效的替代方法是使用某些第三方进程来监视剪贴板,并将所有向后反斜杠切换为正斜杠。就我而言,这可能发生:

  1. [已解决] Vim 中,当我使用以下映射来获取文件的“父目录”时:nnoremap <leader><leader>p :let @* = expand("%:p:h")<CR>

    • 解决方案:set shellslash,有关详细信息,请参阅“暂定解决方案”。
  2. 虽然有些剪贴板监控/录制应用程序:只是识别分配给系统剪贴板的字符串是文件夹/目录的地址,并将所有反斜杠替换为正斜杠。

3 个答案:

答案 0 :(得分:1)

通过 Vim

的初步解决方案

.vimrc(或_vimrc for Windows)中,使用设置:set shellslash,并使用以下映射复制地址:

  • 文件的绝对目录:

    nnoremap <leader><leader>f :let @* = expand("%:p")<CR>

  • 父文件夹的绝对目录:

    nnoremap <leader><leader>p :let @* = expand("%:p:h")<CR>

  • 参考:Is it possible to make vim use forward slashes on windows?

  • 其他有用的映射:

    " File Name only, without extension
    nnoremap <leader><leader>n :let @* = expand("%:t:r")<CR>
    " Extension.
    nnoremap <leader><leader>e :let @* = expand("%:t:e")<CR>
    " Copy the line number with file name
    nnoremap <leader><leader>l :let @* = expand("%:p").":".line(".")<CR>
    

解释

此解决方案的基础是:

  1. git-bash.exe能够识别以下格式的地址:c:/users/USERNAME/document,其中正斜杠用作分隔符。

  2. Vim的本机函数expand("%:p")(带有其他标志)可以将目录信息复制到剪贴板。

答案 1 :(得分:0)

  

是否可以使用以下语法?

cd c:\users\USERNAME

我刚尝试使用最新的Git 2.13.3 bash:它可以工作,但我必须输入:

cd c:\\users\\USERNAME

答案 2 :(得分:0)

替代解决方案:使用单引号确实可行。示例:

cd 'c:\users\USERNAME\Folder_1'

来源:Forward slash vs backward slash for file path in git bash