VIM:设置一个键映射,以替换Set列中的“与”(&;)符号

VIM:设置一个键映射,以替换Set列中的“与”(&;)符号,vim,Vim,我想设置一个键映射,这样当我键入这个键(在我的示例中特别是F7键)时,它会用一个符号(&)替换第6列中的任何字符 我正在努力 :nnoremap <F7> 6| R &<ESC> :nnoremap 6|R& 然而,这似乎没有起到作用,我似乎无法理解为什么 为什么我试错了 然而,这似乎没有起到作用,我似乎无法理解为什么 那么…它做了什么而不是你期望的 无论如何,您的映射存在许多问题: 不能在映射中使用文字管道字符。您必须对其进行转义(\\\124;)或改用,这

我想设置一个键映射,这样当我键入这个键(在我的示例中特别是F7键)时,它会用一个符号(&)替换第6列中的任何字符

我正在努力

:nnoremap <F7> 6| R &<ESC>
:nnoremap 6|R&
然而,这似乎没有起到作用,我似乎无法理解为什么

为什么我试错了

然而,这似乎没有起到作用,我似乎无法理解为什么

那么…它做了什么而不是你期望的

无论如何,您的映射存在许多问题:

  • 不能在映射中使用文字管道字符。您必须对其进行转义(
    \\\124;
    )或改用
    ,这为我们提供了以下信息:

    nnoremap <F7> 6\| R &<Esc>
    nnoremap <F7> 6<Bar> R &<Esc>
    
  • R
    将您置于替换模式。这是无用的,因为您只替换一个字符,它会强制您将
    切换到正常模式。改用
    r

    nnoremap <F7> 6\|r&
    
    nnoremap 6\| r&
    
    请参见
    :help R
    :help R

  • 然而,这似乎没有起到作用,我似乎无法理解为什么

    那么…它做了什么而不是你期望的

    无论如何,您的映射存在许多问题:

  • 不能在映射中使用文字管道字符。您必须对其进行转义(
    \\\124;
    )或改用
    ,这为我们提供了以下信息:

    nnoremap <F7> 6\| R &<Esc>
    nnoremap <F7> 6<Bar> R &<Esc>
    
  • R
    将您置于替换模式。这是无用的,因为您只替换一个字符,它会强制您将
    切换到正常模式。改用
    r

    nnoremap <F7> 6\|r&
    
    nnoremap 6\| r&
    
    请参见
    :help R
    :help R


  • 或者,将光标移回其原始位置(即更换前的位置)也可能有用。要执行此操作,请使用:

    nnoremap <F7> :let a=getpos(".")<cr>6\|r&:call cursor(a[1],a[2])<cr>
    
    nnoremap:let a=getpos(“.”)6\| r&:call cursor(a[1],a[2])
    
    这张地图是这样分解的:

    • :让a=getpos(“.”
      将光标位置保存在变量
      a
    • 6\\r&
      在前面的回答中进行了解释
    • :调用游标(a[1],a[2])
      将游标返回到其原始位置

    或者,将光标移回其原始位置(即更换前的位置)也可能有用。要执行此操作,请使用:

    nnoremap <F7> :let a=getpos(".")<cr>6\|r&:call cursor(a[1],a[2])<cr>
    
    nnoremap:let a=getpos(“.”)6\| r&:call cursor(a[1],a[2])
    
    这张地图是这样分解的:

    • :让a=getpos(“.”
      将光标位置保存在变量
      a
    • 6\\r&
      在前面的回答中进行了解释
    • :调用游标(a[1],a[2])
      将游标返回到其原始位置
      • 给你:

        :map <F7> 05lr&
        
        :地图05lr&
        
        无路可逃。只需输入并按回车键。实际上是在输入那些字符——小于号、大写字母F、数字7等等。

        给你:

        :map <F7> 05lr&
        
        :地图05lr&
        

        无路可逃。只需输入并按回车键。实际上是在输入那些字符——小于号、大写字母F、数字7等等。

        如果您已经将其标记为与Fortran相关的字符,您是否关心该字符是空白还是零?我不关心该字符的标识是什么。如果我对固定格式Fortran标准理解得足够透彻,只需在第6列中放置任何非空字符,下一行就可以从上一行结束的地方继续。我之所以用Fortran标记它,是因为这样的动机,以防其他Fortran开发人员已经解决了这个问题。我问这个问题的原因正是因为第6列中的
        0
        与那里的
        &
        不同。鉴于您已经将它标记为与Fortran相关的内容,你在乎这个角色是空白还是零吗?我不在乎这个角色的身份是什么。如果我对固定格式Fortran标准理解得足够透彻,只需在第6列中放置任何非空字符,下一行就可以从上一行结束的地方继续。我之所以用Fortran来标记这个问题,是因为这样做是为了防止其他Fortran开发人员解决这个问题。我问这个问题的原因正是因为第6列中的
        0
        与那里的
        &
        不同。