当我拼错一个单词时,如何让vim听到终端铃声?


17

我做了很多转录,在不看屏幕的情况下以100+ wpm的速度输入。我认为,如果拼写检查器刚刚标记了最后一个单词,vim可以给我某种听得见的提示(可能表示我打错了,应该仔细检查我写的内容)会很有用。

当我按下空格键时,拼写检查器绝对可以语法高亮显示拼写错误的单词。这是如何运作的?有没有办法同时运行某种命令?

我总是在终端上使用vim;我现在没有设置终端铃,但是如果那是最简单的方法,我可能可以使它工作。


除了问题本身,您是否真的要打断您的输入以固定单词?如果您先完成写作,然后经历错误,例如使用“跳转到下一个拼错的单词”命令,您会不会更快?
沙巴兹(Shahbaz)2015年

我的动机更像是这样:我通常使用的输入方式可以告诉我何时输入正确的单词,但是有时我会输入一个单词并知道我对它有些摸索,但是我仍然有机会对的。如果它不发出哔哔声,那我知道我做对了,可以继续进行而不必担心。否则,我^ W查看它,然后重试。但是,这是一个完全公平的问题–可能值得安排一些不同的方法并看看会发生什么。
索伦·比约斯塔德

2
好的,您这样做的方式可能会更有效率。如果蜂鸣声“使您看上去”,那可能会使您减速,但是如果您使用自动^ W响应蜂鸣声,甚至不看屏幕,那也应该很快。不过请小心,如果您的大脑在开始输入下一个单词后听到哔哔声,^ W会删除错误的单词。在这种情况下,您甚至可以考虑在发出哔声后丢弃所有插入的字符,直到按下^ W为止,因此您可以放心地知道^ W删除了拼写错误的单词,因此您必须从那里继续。
沙巴兹(Shahbaz)2015年

Answers:


15

无法直接访问最后一个拼写错误的单词,也不能查询突出显示的单词。您必须自己在光标之前检索该单词,然后单独对其进行拼写检查。幸运的是,有这样的spellbadword()功能。以下在每个插入的键上设置一个触发器,用于检查最后一个单词:

autocmd CursorMovedI * if &spell && spellbadword(matchstr(strpart(getline('.'), 0, col('.') - 1), '\S\+\s$') )[1] ==# 'bad' | execute "normal! \<C-\>\<C-n>\<Esc>" | endif

除了发出嘟嘟声(通过:normal! <Esc>),您还可以通过system()播放简短的声音来调用外部工具。这样也可以避免出现<Esc>停止光标移动的问题,这种情况有时会发生。


太棒了!确实确实会在按下空格键时稍加延迟(在输入一个单词后),但这不足以解决很多问题,当然,仅在启用拼写检查时才会发生。对于蜂鸣声,我制作了一个脚本,该脚本可以运行mplayer -really-quiet $SOUNDFILE >/dev/null 2>&1 &并将其作为动作放入。
索伦·比约恩斯塔德

1
谢谢!如果if &spell && spellbadword(...)关闭了拼写检查,则可以附加添加以禁用单词检索功能。
Ingo Karkat,2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.