Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
学习vim时,有哪些方法可以减少模式错误?_Vim_Text Editor_Modal Dialog - Fatal编程技术网

学习vim时,有哪些方法可以减少模式错误?

学习vim时,有哪些方法可以减少模式错误?,vim,text-editor,modal-dialog,Vim,Text Editor,Modal Dialog,我在使用vim时经常出现模式错误,即在正常模式下开始键入文本,或在插入模式下开始键入命令。我知道随着vim的怪癖渗透到你的骨骼中,这一点会随着时间的推移而消失,但有什么方法可以加快这一过程吗?请记住始终将vim保持在正常模式。使用gvim,在模式之间切换时,光标会从块变为垂直条。这至少会给你一点视觉反馈。如果你还没有这样做,你可以使用:set showmode显示当前模式。在插入模式下,将在状态栏中显示--INSERT-- 在插入模式下,而不是在正常模式下,我使用这些autocmd高亮显示包含光

我在使用vim时经常出现模式错误,即在正常模式下开始键入文本,或在插入模式下开始键入命令。我知道随着vim的怪癖渗透到你的骨骼中,这一点会随着时间的推移而消失,但有什么方法可以加快这一过程吗?

请记住始终将vim保持在正常模式。

使用gvim,在模式之间切换时,光标会从块变为垂直条。这至少会给你一点视觉反馈。

如果你还没有这样做,你可以使用
:set showmode
显示当前模式。在插入模式下,将在状态栏中显示
--INSERT--

在插入模式下,而不是在正常模式下,我使用这些autocmd高亮显示包含光标的整行:

if v:version >= 700
  autocmd InsertEnter * set cursorline
  autocmd InsertLeave * set nocursorline
endif
if v:version >= 700
    set cursorline cursorcolumn
    au WinLeave * set nocursorline nocursorcolumn
    au WinEnter * set cursorline cursorcolumn
    au InsertEnter * set nocursorline nocursorcolumn
    au InsertLeave * set cursorline cursorcolumn
endif

这提供了更多关于模式的视觉反馈。

插入模式应该只是暂时的。顾名思义,普通模式是编辑任务最喜欢的模式

通常,您应该在正常模式下花费更多的时间,并且在插入内容后始终按ESC键

也许我只是为自己说话,但现在我有一个习惯,认为我一直处于正常模式,而且我几乎从来没有错。

切换“Esc”和“Caps Lock”键

如果你不小心点击“Caps Lock”,你将开始输入与你喜欢做的事情无关的命令。如果你是一个有经验的用户,这很烦人;如果你是一个初学者,了解哪里出了问题可能会很麻烦

每次你需要按Esc键时,你必须移动你的整只手,让你的小指触摸Esc键,然后再次更换整只手。 一些Vim用户会告诉你,过一段时间你就会习惯这样做了,这没什么大不了的。我认为这个论点不够,因为你几乎可以习惯于在任何地方映射任何键。这是一个效率问题

我相信“Esc”使用得非常频繁,“Caps Lock”使用得很少


因此,切换这两个选项是有意义的,因为它可以防止错误并提高打字速度。

以下是我对Ned答案的修改。它在窗口开关上切换(窗口焦点是另一种提供很少视觉反馈的模态行为)

我将其与zenburn配色方案一起使用,并关闭光标闪烁:

if has("gui_running")
    colorscheme zenburn
    set guicursor+=a:blinkon0
endif

每当我不确定自己处于什么状态时,我通常都会捣乱逃跑。它从来不会真的痛!可能是复制品我认为不是复制品。这个问题非常具体,另一个问题更一般。如果这还不够,请将
set[no]cursorline
替换为
colors[desert | default]
ooo。。。这是个好主意。我认为这方面会有很多变化。autocmd InsertEnter、InsertLeave自动命令可以用来触发很多命令。我对此投了赞成票,并选择它作为答案,但必须将我的变体作为单独的答案发布,因为注释不能包含多行代码块。谢谢我想这可能是默认配置。。。我从未见过vim在状态栏中不显示当前模式。