在 vim 缩写内定义 linux 命令
Defining linux command inside vim abbreviations
我在使用 vim 编辑器时经常使用缩写。
现在我想在 /etc/vimrc.
中定义 vim 缩写时使用 Linux 命令
我尝试了各种方法,但 none 成功了。
我的用例:
内部vim:当我输入#!然后输入 "tab" 键,那么输出应该是:
#! /usr/bin/env bash
#Author: Dhimant
#Date: Realtime date at which command is fired
#Description:
我使用 "cr" 标签完成了前两行
ab #! #!/usr/bin/env bash<cr>#author: Dhimant Thanki
但是当使用"date command"时,它不起作用
ab #! #!/usr/bin/env bash<cr>#author: Dhimant Thanki <cr>#Date: `date` <cr>#Task: (NOT WORKING)
因此需要帮助才能完成此任务。
感谢任何帮助。
您可以使用 <C-r>=
插入 Vim 表达式:
iabbr xxx # Date: <C-r>=strftime('%c')<CR><CR># Second line
注意两个 <CR>
:一个用于结束表达式,一个用于插入换行符。
我在这里使用 strftime()
而不是 date
shell 命令,因为这样更简单并且适用于所有平台,但如果你也可以使用 <C-r>=system('date')[:-2]<CR>
更喜欢([:-2]
是删除尾随的换行符)。
您输入的 <cr>
将按字面解释为字母 <cr>
为了转到新行,您可以使用 <ESC>
返回命令模式,然后使用 o
.
O - Begin a new line above the cursor and insert text, repeat [count] times.
o - Begin a new line below the cursor and insert text, repeat [count] times.
例如:
ab #! #!/usr/bin/env bash<ESC>o#author: ErectCrested<ESC>o#Some more text<ESC>o
如果要在缩写后换行开始插入,请使用最后一个 <ESC>o
,否则将其删除。
您应该使用代码段引擎来实现您想要的。首先,您需要安装 ultisnips. See here 如何设置 ultisnips 以识别您自己的代码片段。
在您的自定义代码段目录下,创建一个名为 all.snippets
的文件并将以下内容添加到此文件:
snippet #! "bash file header"
#Author: Dhimant
#Date: `!v strftime('%c')`
#Description: just for a test
endsnippet
在上面的代码片段中,!v
用于执行 Vim 命令,在本例中,strftime()
用于获取当前时间。
我在使用 vim 编辑器时经常使用缩写。 现在我想在 /etc/vimrc.
中定义 vim 缩写时使用 Linux 命令我尝试了各种方法,但 none 成功了。
我的用例:
内部vim:当我输入#!然后输入 "tab" 键,那么输出应该是:
#! /usr/bin/env bash
#Author: Dhimant
#Date: Realtime date at which command is fired
#Description:
我使用 "cr" 标签完成了前两行
ab #! #!/usr/bin/env bash<cr>#author: Dhimant Thanki
但是当使用"date command"时,它不起作用
ab #! #!/usr/bin/env bash<cr>#author: Dhimant Thanki <cr>#Date: `date` <cr>#Task: (NOT WORKING)
因此需要帮助才能完成此任务。 感谢任何帮助。
您可以使用 <C-r>=
插入 Vim 表达式:
iabbr xxx # Date: <C-r>=strftime('%c')<CR><CR># Second line
注意两个 <CR>
:一个用于结束表达式,一个用于插入换行符。
我在这里使用 strftime()
而不是 date
shell 命令,因为这样更简单并且适用于所有平台,但如果你也可以使用 <C-r>=system('date')[:-2]<CR>
更喜欢([:-2]
是删除尾随的换行符)。
您输入的 <cr>
将按字面解释为字母 <cr>
为了转到新行,您可以使用 <ESC>
返回命令模式,然后使用 o
.
O - Begin a new line above the cursor and insert text, repeat [count] times.
o - Begin a new line below the cursor and insert text, repeat [count] times.
例如:
ab #! #!/usr/bin/env bash<ESC>o#author: ErectCrested<ESC>o#Some more text<ESC>o
如果要在缩写后换行开始插入,请使用最后一个 <ESC>o
,否则将其删除。
您应该使用代码段引擎来实现您想要的。首先,您需要安装 ultisnips. See here 如何设置 ultisnips 以识别您自己的代码片段。
在您的自定义代码段目录下,创建一个名为 all.snippets
的文件并将以下内容添加到此文件:
snippet #! "bash file header"
#Author: Dhimant
#Date: `!v strftime('%c')`
#Description: just for a test
endsnippet
在上面的代码片段中,!v
用于执行 Vim 命令,在本例中,strftime()
用于获取当前时间。