Vim 用作构造名称的占位符会影响正确的缩进
我编写了一个Vim脚本,用于自动完成Fortran程序单元、类型定义等,借鉴了Vim latex插件 此时,如果我在光标位于单词Vim 用作构造名称的占位符会影响正确的缩进,vim,fortran,label,indentation,placeholder,Vim,Fortran,Label,Indentation,Placeholder,我编写了一个Vim脚本,用于自动完成Fortran程序单元、类型定义等,借鉴了Vim latex插件 此时,如果我在光标位于单词程序上时点击,我会得到以下结果 PROGRAM <+program_name+> USE <+used_module_name+> IMPLICIT NONE <++> END PROGRAM <+program_name+> 其中第二行没有缩进,因为字符串不是有效名
程序
上时点击
,我会得到以下结果
PROGRAM <+program_name+>
USE <+used_module_name+>
IMPLICIT NONE
<++>
END PROGRAM <+program_name+>
其中第二行没有缩进,因为字符串
不是有效名称(至少我认为是这样!)。因此,下面的行向后移动(显然,当if位于第一列时,第二行是唯一错误的行)
这也会发生在DO
构造中,但奇怪的是,在SELECT CASE
构造中不会发生:
<+name+>: SELECT CASE (<+case expression+>)
CASE (<+case selector+>)
<++>
CASE DEFAULT
<++>
END SELECT <+name+>
:选择大小写()
案例()
案例违约
结束选择
这就是为什么我认为一个解必须存在并且不那么复杂。我决定用“脏”的方式解决这个问题,也就是说,在生成
IF…THEN…ELSE…END IF
和DO…END DO
构造的命令序列的适当位置插入空格。这不是一个优雅的解决方案,但我认为它没有那么多缺点。唯一需要更改的是根据shiftwidth
手动添加到命令序列中的空格数
SatoKatsura在评论中建议,最好放弃这条路并使用现有的片段解决方案。代码段集合可以与它一起使用,它有一个Fortran代码段。我想我正确安装了UltiSnips,因为
:help UltiSnips
可以工作,但我没有安装vim-snippets。为什么你认为你没有安装vim代码段
?与其他插件不同,vim snippets
只是数据,它不“做”任何事情。那么,从您评论中的第二个链接下载zip文件后,我应该怎么做?手动复制文件?如果是这样的话,我应该把它们放在哪里?你需要像其他插件一样安装它(希望你使用的是插件管理器)。然后,您需要阅读UltiSnips
的文档,才能将所有内容放在一起。
<+name+>: SELECT CASE (<+case expression+>)
CASE (<+case selector+>)
<++>
CASE DEFAULT
<++>
END SELECT <+name+>