Vim 如何放置字符'&';在vi的第6列和第80列中

Vim 如何放置字符'&';在vi的第6列和第80列中,vim,vi,Vim,Vi,我使用vi作为Fortran编程的首选编辑器。有时,我想用&替换某行的第6个和第80个字符。例如,在fortran程序中: Program Test real*8 x c write(*,*) 1 'Hello World' 2 , x end 字符1和2应该被替换为&而不是在整个文件中,而是在“当前行”上。我可以为此创建函数或“热键”吗?此外,我想在第80列中添加另一个&。两种方法 :s/\v(.){7

我使用vi作为Fortran编程的首选编辑器。有时,我想用
&
替换某行的第6个和第80个字符。例如,在fortran程序中:

       Program Test
       real*8 x
c
       write(*,*)
     1   'Hello World'  
     2   , x
        end
字符
1
2
应该被替换为
&
而不是在整个文件中,而是在“当前行”上。我可以为此创建函数或“热键”吗?此外,我想在第80列中添加另一个
&

两种方法

:s/\v(.){79}\zs./\&

其中,
80 |
跳到第80列

大多数人会将后一种可能性存储到宏中。它也可以存储到映射中(
:nnoremapµ80 | r&


但是,如果没有那么多字符,您必须完成这一行,或者更简单地使用选项
'virtualedit'
设置为
all

您可以转到列
,并用
r
替换单个字符。假设要将列“6”更改为“&”。您可以执行
6 | r&

如果第80列存在,也可以将第80列更改为“&”。我建议改为使用“A&”(在行尾添加“&”)

对于
.vimrc
中的快速功能:

nnoremap <silent> <F8> 06 r&3<ESC>A &<ESC>
nnoremap 06 r&3A&
(将F8映射到热键。“0”转到行的开头。然后是6个空格。将光标下的字符替换为“&”。以完成第一部分。将“A”添加到末尾并再次添加“&”)


然后只需在所需行上按F8键。

您是指第7列吗?上面的
1
2
在第7列(vim和大多数编辑器一样,统计以1开头的列)。哦,在键入问题时,这是一个格式问题。我的意思是1和2应该在6列中,虽然这很简单,但我可以在vimrc中用一个更可读的名称来命名
80 | r&
吗?80 |跳到第80列之前的行尾,这取决于您找到一个您会记住的键绑定。在我的回答中,我提出了
µ
。它可以是你想要的任何东西。关于行尾,最简单的解决方案是
:设置virtualedit=all
。否则,我们将不得不附加
repeat('''80,col('$'))。&
,或者根据
col('$)
值进行替换。类似于:
:nnoremapµ(列(“$”)<80?'A'。重复('''80,列(“$”)。&':'80\'r&')
。设置
'virtualedit'
显然更简单——注意:由于
:h bar
问题,需要使用反斜杠。我是键入
还是键入escape键?在.vimrc中需要“”(全部内容)。“”指示vim在执行功能时使用特定键。您可以在.vimrc中插入(或复制粘贴)整行。
nnoremap <silent> <F8> 06 r&3<ESC>A &<ESC>