Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vim 用作构造名称的占位符会影响正确的缩进_Vim_Fortran_Label_Indentation_Placeholder - Fatal编程技术网

Vim 用作构造名称的占位符会影响正确的缩进

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+> 其中第二行没有缩进,因为字符串不是有效名

我编写了一个Vim脚本,用于自动完成Fortran程序单元、类型定义等,借鉴了Vim latex插件

此时,如果我在光标位于单词
程序
上时点击
,我会得到以下结果

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+>