【问题标题】:How to move from one C/C++ function to the next (both directions)如何从一个 C/C++ 函数移动到下一个(双向)
【发布时间】:2010-11-24 08:30:49
【问题描述】:

我只想在 .c/.cpp 文件中从一个函数跳转到下一个函数。我该怎么做?

【问题讨论】:

标签: vim


【解决方案1】:

看看 exuberant-ctags 它适用于 Emacs,以及你的“vim”东西 ;-)

【讨论】:

    【解决方案2】:

    我相信您正在寻找]],它会跳转到第一列的下一个{ 字符。

    有类似的选项,请尝试:help ]] 了解更多信息。

    【讨论】:

      【解决方案3】:

      关于 [[ 和 ]] 的使用,请注意 vim 文档中 motion.txt 中的以下内容:

      如果您的 '{' 或 '}' 不在第一列,并且您想使用 "[[" 和“]]”无论如何,请尝试以下映射: :地图 [[ ?{w99[{ :map ][ /}b99]} :map ]] j0[[%/{ :map [] k$][%?}

      【讨论】:

      • 这些问题是,如果你有一个搜索活动并且你使用这些地图,你的搜索将被覆盖。
      【解决方案4】:

      我使用这些映射使 [[ 和 ]] 可以与不将起始 { 放在行首的函数一起使用。

      map ]] :call search("^\\(\\w.*\\)\\?{")<CR>
      map [[ :call search("^\\(\\w.*\\)\\?{", "b")<CR>
      map ][ :call search("^}")<CR>
      map [] :call search("^}", "b")<CR>
      

      【讨论】:

      • 呵呵,把光标移到匹配的结尾,像map ]] :call search("^\\(\\w.*\\)\\?{", "e")&lt;CR&gt;这样的'{'或'}'可能更好。
      【解决方案5】:

      只需使用]m跳转到下一个方法,[m跳转到上一个方法。

      在你的~/.vimrc,你可以这样做

      nnoremap ]m ]mzz

      nnoremap [m [mzz

      因此,每次在方法之间跳转时,都将方法放在屏幕的中心。

      【讨论】:

        【解决方案6】:

        如果您使用 taglist,我添加了一个功能。如果 taglist 支持该语言,您可以使用 Ctrl-up 和 Ctrl-down 从一个标签跳转到另一个标签。

        这里:https://github.com/man9ourah/taglist

        这个给你的.vimrc

        nmap <silent> <c-up> <plug>(TlistJumpTagUp)     " Map ctrl-up to move one tag up
        nmap <silent> <c-down> <plug>(TlistJumpTagDown) " Map ctrl-down to move one tag down
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-08-13
          • 1970-01-01
          • 2018-04-30
          • 1970-01-01
          • 1970-01-01
          • 2013-07-06
          相关资源
          最近更新 更多