Vim:在当前光标位置插入文件中的文本
要在当前Vim缓冲区中插入文件中的文本,我使用Vim:在当前光标位置插入文件中的文本,vim,Vim,要在当前Vim缓冲区中插入文件中的文本,我使用:r filename在光标下方插入文本,或使用:0r filename插入第一行 如何在[光标]所在的文件中插入内容 Actual line with some coding [Cursor] // TODO for later version Line below actual line ... 插入一个换行符,读取文件,然后取出换行符…我建议Ctrl-R Ctrl-O=join(readfile('filename','b'),“\n”
:r filename
在光标下方插入文本,或使用:0r filename
插入第一行
如何在[光标]所在的文件中插入内容
Actual line with some coding [Cursor] // TODO for later version
Line below actual line ...
插入一个换行符,读取文件,然后取出换行符…我建议Ctrl-R Ctrl-O
=join(readfile('filename','b'),“\n”)
其他解决方案:
可能在另一个窗口中打开另一个文件,使用:%yh
(h
是一个寄存器名),在原始文件中,在正常模式下使用“hp
或”hp
,或在插入模式下,使用Ctrl-R Ctrl-O h”将其放入/.vimrc
'在插入模式下,按n
"
imap,n=展开(“%:p”)
阅读更多信息。此操作有效(将光标处的文件名插入当前文档):
:r
要使用的是:-1read
(-1
是当前行号减去1)
我使用以下键绑定轻松插入我拥有的各种模板:nnoremap in:-1read~/.vim/templates/
请注意,像nnoremap in:read~/.vim/templates/
这样的东西在站在第1行时将不起作用。这真的很奇怪,可能是vim中的一个bug(我使用的是7.4.x)。用实际代码扩展公认的答案,因为我尝试了这个建议,效果很好;
下面是插入一个小php代码段的示例:
`nnoremap <leader>php a<CR><ESC>:.-1read $SNIPPETS/php<CR>I<BS><ESC>j0i<BS><ESC>l`
无法在光标前粘贴文本
以及:
`nnoremap php a:-1read$SNIPPETS/phpIj0il`
可以在光标后粘贴文本。反之亦然。我已经使“光标前”更容易触发,因为我在在线粘贴时更经常使用它
其他注释 如果您正在读取一个您希望经常使用的文件,而该文件值得为其设置密钥映射(即从文件中读取一个片段),则此解决方案非常有用。如果您只是想随时读取一个随机文件,则此解决方案并没有真正的帮助,因为您还没有准备好密钥映射
因为它是非常公式化的,我相信可以定义一个函数,将文件名作为参数,然后做同样的事情。虽然我从未用vimscript编写过函数,但是如果有人想编辑这个答案以包含该解决方案,我敦促他们这样做!这并不是一直在问的问题d for.OP不希望插入当前文件名,但希望插入另一个文件内容。这更像是在光标下方。
:-1read
可用于将文本放置在光标上方(这会让您感觉文本位于光标位置)。这两种解决方案都不在当前光标位置插入文本。:r
在当前行下方的行上插入,而:-1read
在当前行上方的行上插入。问题是如何在当前光标位置插入。或者只使用:-1read
:)这与p
和 :r <cfile>
`nnoremap <leader>php a<CR><ESC>:.-1read $SNIPPETS/php<CR>I<BS><ESC>j0i<BS><ESC>l`
`nnoremap [KEY SEQUENCE] a<CR><ESC>:.-1read [FILE PATH]<CR>I<BS><ESC>j0i<BS><ESC>l`
`nnoremap <leader>php i<CR><ESC>:.-1read $SNIPPETS/php<CR>I<BS><ESC>j0i<BS><ESC>l`
`nnoremap <leader><leader>php a<CR><ESC>:.-1read $SNIPPETS/php<CR>I<BS><ESC>j0i<BS><ESC>l`