Vim vi编辑器未加载保存的宏

Vim vi编辑器未加载保存的宏,vim,Vim,需要在(redhat linux 7.5)上使用vi宏的帮助 我的~/.vimrc如下所示: set nu let @c='0i#^[j' let @u='0<80>kDj' 但是,每次我录制它们时,它们都会起作用。只是不要从vimrc加载并持续工作。 提前感谢:)如果您已经在使用vim(而不是纯vi),您可以这样做 let @c = 'I#^[' " make sure to insert a literal escape 或者更好: " in ~/.vim/after/f

需要在(redhat linux 7.5)上使用vi宏的帮助

我的~/.vimrc如下所示:

set nu

let @c='0i#^[j'
let @u='0<80>kDj'
但是,每次我录制它们时,它们都会起作用。只是不要从vimrc加载并持续工作。
提前感谢:)

如果您已经在使用vim(而不是纯vi),您可以这样做

let @c = 'I#^['  " make sure to insert a literal escape
或者更好:

" in ~/.vim/after/ftplugin/c.vim
nnoremap <buffer> gcc I#<Esc>j
“在~/.vim/after/ftplugin/c.vim中
nnoremap gcc I#j

第二个也可以这样做。

只要保留原始字节序列,这应该可以正常工作(因此
是一个单个字符,而不是四个
)-您的
cat
输出似乎证实了这一点。我能想到的唯一问题是Vim在读取
时可能使用了错误的编码。vimrc
(但在编辑时不知何故检测到了正确的编码)。顶部的
脚本编码utf-8
可能会有所帮助

在任何情况下,使用都可以避免这些问题。您需要使用双引号来进行解释(然后编写
\
而不是
^[
\
而不是
kb
,等等)。既然这样,为什么不定义正确的映射(使用,或者更确切地说
:nnoremap
),以再次释放寄存器

说到寄存器,总是有可能意外地重写它们,它们的数量有限,而且难以记忆;所有映射都不会受到影响。如果您真的想继续为这些快捷方式保留寄存器(并且不存在重写它们的问题),您可以依赖于来持久化它们;实际上没有必要在
~/.vimrc
中显式地初始化它们。最后,我让它工作了。 只是尝试使用“vim”而不是“vi”来查看它是否加载了“.vimrc”,它确实加载了。 我假设vi会加载太多。vimrc,但似乎我错了。
现在,我能够完全按照预期使用保存的宏。

可能重复感谢您的回复实际上,我检查了vimrc以确保它是单个字符,并且确实是“b”或“w”“在一个笔划中通过它。另外,在vimrc中添加编码作为第一行,但它仍然不起作用。学习viminfo文件和map/nnoremap函数以了解如何使用它们。任何进一步的帮助都将不胜感激。”
" in ~/.vim/after/ftplugin/c.vim
nnoremap <buffer> gcc I#<Esc>j