使用 vim 打开目录时,为啥尝试用鼠标选择文本会出现错误“E21:无法进行更改,'modifiable' 已关闭”?
Posted
技术标签:
【中文标题】使用 vim 打开目录时,为啥尝试用鼠标选择文本会出现错误“E21:无法进行更改,\'modifiable\' 已关闭”?【英文标题】:When opening a directory with vim, why does attempting to select text with the mouse gives the error "E21: Cannot make changes, 'modifiable' is off"?使用 vim 打开目录时,为什么尝试用鼠标选择文本会出现错误“E21:无法进行更改,'modifiable' 已关闭”? 【发布时间】:2021-09-28 05:05:22 【问题描述】:如果我运行evim foo
,其中 foo 是一个目录,我会得到一个看起来像这样的缓冲区
" ============================================================================
" Netrw Directory Listing (netrw v156)
" /home/chris-henry/foo
" Sorted by name
" Sort sequence: [\/]$,\<core\%(\.\d\+\)\=\>,\.h$,\.c$,\.cpp$,\~\=\*$,*,\.o$,\.obj$,\.info$,\.swp$,\.bak$,\~$
" Quick Help: <F1>:help -:go up dir D:delete R:rename s:sort-by x:special
" ==============================================================================
../
./
bar/
baz/
qux
我可以使用Shift
+ 箭头键选择文本(或者我认为是其他更模式的方式),但是尝试用鼠标选择文本会出现错误:
E21: "Cannot make changes, 'modifiable' is off"
但我并不想做出改变;我只是想选择文本(以便在其他地方单击鼠标中键粘贴)。 vim
(或 netrw?)显然对我选择文本没有任何问题,因为我可以使用 Shift
+ 箭头键来完成。那么为什么点击和拖动会出现问题呢?
【问题讨论】:
【参考方案1】:我是这样理解的……
:help netrw-cr
映射<CR>
进入当前行的目录/文件。
:help netrw-leftmouse
模拟 <CR>
。
您使用的是“easy Vim”,因此默认情况下处于插入模式。
在插入模式下,<CR>
插入一个字符,从而改变缓冲区的内容。
您处于“只读”缓冲区中,禁止更改缓冲区内容。
因此你得到一个错误,因为 Vim 认为你试图改变缓冲区的内容。
这是相当不幸的。
我不记得曾经尝试禁用或更改 Netrw 映射。也许你可以在非常密集的:help netrw
中找到一些东西。
【讨论】:
以上是关于使用 vim 打开目录时,为啥尝试用鼠标选择文本会出现错误“E21:无法进行更改,'modifiable' 已关闭”?的主要内容,如果未能解决你的问题,请参考以下文章
在启用 set mouse=a 的情况下复制 Vim 外部的文本
为啥当 Interstitial 关闭时先前输入的文本会从 TextView 中消失