防止vim跳过源代码

电子海盗

乡亲们!

我将vim用作IDE来用bash,Python和C编写代码。此外,我还有一个密钥映射来执行当前缓冲区,具体取决于文件类型。这是我的.vimrc的负责部分:

...
autocmd FileType python call Python_source()
autocmd FileType sh call Bash_source()
...
" Read lw (lispwords) modelise from current buffer and pass it as command arguments
func! LWargs()
    set lw=''
    doautocmd BufRead
    if len(&lw) > 0 && len(&lw) < 512
        return ' ' . &lw
    endif
    return ''
endfunc

func! Python_source()
    setlocal number cursorline
    setlocal shiftwidth=2
    setlocal foldmethod=indent

    map <F9> :w \| :exe '!python' '%:p' . LWargs()<CR>
    imap <F9> <Esc> :w \| :exe '!python' '%:p' . LWargs()<CR>

    " Comments on Ctrl-C
    map <C-C> :call ToggleComment('#')<CR>
    imap <C-C> <Esc>:call ToggleComment('#')<CR>li
endfunc

func! Bash_source()
    setlocal number cursorline
    setlocal shiftwidth=4

    map <F9> :w \| :!./%<CR>
    imap <F9> <Esc> :w \| :!./%<CR>

    map <C-C> :call ToggleComment('#')<CR>
    imap <C-C> <Esc>:call ToggleComment('#')<CR>li
endfunc
...

因此,当我按F9键时,魔术发生了,并且我的代码由LWargs传递的参数执行。唯一的问题是程序退出后,vim会跳到文件的开头,这迫使我将光标定位在我正在工作的那一行上,这使我的生活更加艰难。有什么方法可以防止Vim跳来跳去吗?

文件火

问题出doautocmd BufRead在您的中的命令,该命令LWargs()会将光标位置重置到文件的顶部。

(至少在我的情况下,打开Vim时用于恢复光标位置的命令是导致光标移动的命令。您可以检查列表中的内容,:autocmd BufEnter *以查看是否可以找到类似的命令或其他可能导致光标移动的命令。再看看,事实证明我从我的Linux发行版中得到了同样的规则...)

防止这种情况的一种好方法是通常使用winsaveview()保存光标的位置和窗口视图(在最上面的那一行,关闭自动换行时窗口是否向右滚动到一列)并winrestview()恢复它。

这是LWargs()不会移动光标的更新

功能!
    如果len(&lw)> 0 && len(&lw)<512
        返回'',则LWargs()
    设置lw = let saved_view = winsaveview() 
    doautocmd BufRead调用winrestview(saved_view)&lw 
    endif 
    return''结束
函数
    
    

另请注意,正确的语法是set lw=,如果您使用,则将set lw=''设置两个字符的字符串并用两个单引号引起来。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

卸载从源代码编译的Vim

来自分类Dev

如何防止User-Agent:Eureka / 1返回源代码

来自分类Dev

防止他人阅读源代码的最佳方法

来自分类Dev

vim从源代码构建:E518错误

来自分类Dev

vim-snipmate不扩展非源代码文件

来自分类Dev

在Vim中重新缩进源代码的键盘映射

来自分类Dev

使用源代码中的参数使 vim 运行脚本

来自分类Dev

如何防止用户访问angularjs应用程序的完整源代码

来自分类Dev

如何防止组织模式执行所有babel源代码块?

来自分类Dev

查看源代码时如何防止Chrome刷新页面?

来自分类Dev

如何防止用户访问angularjs应用程序的完整源代码

来自分类Dev

如何防止博主在撰写视图中转换我的 C++ 源代码片段?

来自分类Dev

NSIS - 使用重新安排的操作码进行编译以防止访问源代码

来自分类Dev

如何在Vim编辑器中使用捆绑程序打开gem源代码

来自分类Dev

重新编译VIM:apt-get找不到源代码?

来自分类Dev

如何在源代码中包含vim设置,以便以相同方式显示文件?

来自分类Dev

如何使用 python2 和 3 支持从源代码构建 vim80?

来自分类Dev

NFS源代码

来自分类Dev

hadoop命令的源代码

来自分类Dev

在线更改源代码

来自分类Dev

铬源代码编译

来自分类Dev

搜索函数源代码

来自分类Dev

从源代码安装Swish ++

来自分类Dev

AsyncTask源代码问题

来自分类Dev

源代码控制混乱

来自分类Dev

Perl的奇怪源代码

来自分类Dev

关于htonl的源代码

来自分类Dev

从源代码构建HikariCP

来自分类Dev

源代码正反显示