Vim 写入时覆盖文件名
Vim overwrites filename when writing
假设我有一个名为 FooBar.java 的文件。当我用
在 powershell window 中打开文件时
> vim foobar.java
并在编辑后写入文件,文件被重命名 FooBar.java -> foobar.java.
如果我用
打开文件
> vim FOOBAR.java
它被重命名为 FooBar.java -> FOOBAR.java。
因此 Vim 将名称更改为区分大小写,以适应我使用 powershell 命令打开文件时的拼写方式。这对我来说是不受欢迎的行为,在我全新安装 OS (Windows 10) 之前我没有遇到过这个问题。我使用与以前完全相同的 .vimrc 。这是一个巨大的麻烦,因为 java 对其文件名区分大小写。
但是,它似乎只发生在 .java 文件中。对于 .cpp 或 .txt 或 .csv 文件,无论我如何键入,文件的大小写都保持不变。
我的问题分为两部分:
- 为什么 Vim 突然这样做,而以前没有用相同的 .vimrc 这样做?
- 如何永久禁用此行为,最好使用 .vimrc 行?
有一个 3 个月前的副本,但由于我的互联网积分低,我无法对其发表评论,而且它有 0 个答案,所以我做了一个新的。
Vim save file in lower case
这是我的.vimrc:
的内容
"Created for Vim version 8.2
set clipboard+=unnamed
set backspace=indent,eol,start
set noswapfile
set undofile
set undodir=~\vimfiles\undodir
set encoding=utf8
set fileencoding=utf8
set autoindent
set smartindent
set tabstop=4
set shiftwidth=4
set hlsearch
set incsearch
set ignorecase
set smartcase
set number
set ruler
set linebreak
set showbreak=+
"set listchars=tab:>-,trail:.,extends:>
"set list
:nnoremap U :echo " < < ===== C H E C K C A P S L O C K ===== > > "<CR>
syntax on
set cursorline
hi cursorline ctermbg=darkblue
hi cursorline ctermfg=white
hi colorcolumn ctermbg=darkblue
hi linenr ctermfg=blue
hi preproc ctermfg=magenta
hi type ctermfg=yellow
hi statement ctermfg=magenta
hi constant ctermfg=darkgreen
hi special ctermfg=green
hi comment ctermfg=darkgrey
hi number ctermfg=red
filetype on
autocmd filetype cpp set colorcolumn=80,101
autocmd filetype cpp set nowrap
autocmd filetype hpp set colorcolumn=80,101
autocmd filetype hpp set nowrap
autocmd filetype c set colorcolumn=80,101
autocmd filetype c set nowrap
autocmd filetype h set colorcolumn=80,101
autocmd filetype h set nowrap
autocmd filetype java set colorcolumn=80,101
autocmd filetype java set nowrap
autocmd filetype python set colorcolumn=80
autocmd filetype python set nowrap
autocmd filetype gitcommit set colorcolumn=51,73
autocmd filetype gitcommit set nowrap
您可以通过以下方式解决此问题:
set backupcopy=yes
将此选项设置为默认值后,Vim 将通过重命名原始文件来备份原始文件,然后创建一个与您正在编辑的文件同名的新文件。但是在文件名不区分大小写的文件系统中(通常是 Windows),如果您使用大小写不同的名称引用文件,Vim 可能最终会创建大小写不同的新文件。
使用 backupcopy=yes
将 Vim 创建备份作为新副本(而不是重命名原始文件),然后它将覆盖原始文件。执行该操作时,文件名的大小写不会改变,因为 Vim 并不是真正创建新文件而是写入现有文件,因此文件系统将保留原始名称(以及任何属性原始文件。)
有关详细信息,请参阅 :help 'backupcopy'
。
假设我有一个名为 FooBar.java 的文件。当我用
在 powershell window 中打开文件时> vim foobar.java
并在编辑后写入文件,文件被重命名 FooBar.java -> foobar.java.
如果我用
打开文件> vim FOOBAR.java
它被重命名为 FooBar.java -> FOOBAR.java。
因此 Vim 将名称更改为区分大小写,以适应我使用 powershell 命令打开文件时的拼写方式。这对我来说是不受欢迎的行为,在我全新安装 OS (Windows 10) 之前我没有遇到过这个问题。我使用与以前完全相同的 .vimrc 。这是一个巨大的麻烦,因为 java 对其文件名区分大小写。
但是,它似乎只发生在 .java 文件中。对于 .cpp 或 .txt 或 .csv 文件,无论我如何键入,文件的大小写都保持不变。
我的问题分为两部分:
- 为什么 Vim 突然这样做,而以前没有用相同的 .vimrc 这样做?
- 如何永久禁用此行为,最好使用 .vimrc 行?
有一个 3 个月前的副本,但由于我的互联网积分低,我无法对其发表评论,而且它有 0 个答案,所以我做了一个新的。
Vim save file in lower case
这是我的.vimrc:
的内容"Created for Vim version 8.2
set clipboard+=unnamed
set backspace=indent,eol,start
set noswapfile
set undofile
set undodir=~\vimfiles\undodir
set encoding=utf8
set fileencoding=utf8
set autoindent
set smartindent
set tabstop=4
set shiftwidth=4
set hlsearch
set incsearch
set ignorecase
set smartcase
set number
set ruler
set linebreak
set showbreak=+
"set listchars=tab:>-,trail:.,extends:>
"set list
:nnoremap U :echo " < < ===== C H E C K C A P S L O C K ===== > > "<CR>
syntax on
set cursorline
hi cursorline ctermbg=darkblue
hi cursorline ctermfg=white
hi colorcolumn ctermbg=darkblue
hi linenr ctermfg=blue
hi preproc ctermfg=magenta
hi type ctermfg=yellow
hi statement ctermfg=magenta
hi constant ctermfg=darkgreen
hi special ctermfg=green
hi comment ctermfg=darkgrey
hi number ctermfg=red
filetype on
autocmd filetype cpp set colorcolumn=80,101
autocmd filetype cpp set nowrap
autocmd filetype hpp set colorcolumn=80,101
autocmd filetype hpp set nowrap
autocmd filetype c set colorcolumn=80,101
autocmd filetype c set nowrap
autocmd filetype h set colorcolumn=80,101
autocmd filetype h set nowrap
autocmd filetype java set colorcolumn=80,101
autocmd filetype java set nowrap
autocmd filetype python set colorcolumn=80
autocmd filetype python set nowrap
autocmd filetype gitcommit set colorcolumn=51,73
autocmd filetype gitcommit set nowrap
您可以通过以下方式解决此问题:
set backupcopy=yes
将此选项设置为默认值后,Vim 将通过重命名原始文件来备份原始文件,然后创建一个与您正在编辑的文件同名的新文件。但是在文件名不区分大小写的文件系统中(通常是 Windows),如果您使用大小写不同的名称引用文件,Vim 可能最终会创建大小写不同的新文件。
使用 backupcopy=yes
将 Vim 创建备份作为新副本(而不是重命名原始文件),然后它将覆盖原始文件。执行该操作时,文件名的大小写不会改变,因为 Vim 并不是真正创建新文件而是写入现有文件,因此文件系统将保留原始名称(以及任何属性原始文件。)
有关详细信息,请参阅 :help 'backupcopy'
。