vim:插入模式问题:在.vimrc don';行不通

vim:插入模式问题:在.vimrc don';行不通,vim,Vim,我在vim中遇到问题: 如果修改.vimrc文件并添加以下行: map ;bb A78 它只是在正常模式下工作。 如果我得到它,它也应该在插入模式下工作,不是吗? 在编辑过程中,我已验证所有内容都已正确读取(命令“:map”): 如果我用“imap”做同样的事情,我会遇到同样的问题:command“:imap”显示它已配置,但是如果我进入插入模式,键入“bb”或“bb”或“bb”没有任何更改,我就不会得到A78 我错过了什么? (这个奇妙的插件也只能在正常模式下工作,这对我来说是个大问题) 如

我在vim中遇到问题: 如果修改.vimrc文件并添加以下行:

map ;bb A78
它只是在正常模式下工作。 如果我得到它,它也应该在插入模式下工作,不是吗? 在编辑过程中,我已验证所有内容都已正确读取(命令“:map”):

如果我用“imap”做同样的事情,我会遇到同样的问题:command“:imap”显示它已配置,但是如果我进入插入模式,键入“bb”或“bb”或“bb”没有任何更改,我就不会得到A78

我错过了什么? (这个奇妙的插件也只能在正常模式下工作,这对我来说是个大问题)

如果忘了精确:我只有插件列表,它是cygwin下的vim版本7.3,但在SSH/Linux Debian/vim版本7.0中也有同样的问题

如果我试着完全按照上面写的那样做(如果可能有帮助的话,再试一次),那也行不通:“要使用缩写,切换到插入模式并键入th,然后在上面加上任何空格(空格、制表符或回车)。”根本行不通。这让我发疯

下面是我的.vimrc文件,可能这里有一些我没有看到的错误:

set nocompatible
filetype plugin on
syntax enable

set ignorecase
set paste
set ruler
set modeline

set showcmd

set expandtab
set tabstop=2
set autoindent
set smartindent

set number
colorscheme desert

set vb t_vb=

set backup
set backupdir=~/.vim/backup
set directory=~/.vim/tmp
set fileencodings=utf-8,ucs-bom,default,latin1
set scrolloff=5
set undolevels=1000
nmap ;bw :. w! ~/.vimxfer<CR>
nmap ;br :r ~/.vimxfer<CR>
nmap ;ba :. w! >>~/.vimxfer<CR>

" Tell vim to remember certain things when we exit
"  '10 : marks will be remembered for up to 10 previously edited files
"  "100 : will save up to 100 lines for each register
"  :20 : up to 20 lines of command-line history will be remembered
"  % : saves and restores the buffer list
"  n... : where to save the viminfo files
set viminfo='10,\"100,:20,%,n~/.viminfo

" when we reload, tell vim to restore the cursor to the saved position
augroup JumpCursorOnEdit
 au!
 autocmd BufReadPost *
 \ if expand("<afile>:p:h") !=? $TEMP |
 \ if line("'\"") > 1 && line("'\"") <= line("$") |
 \ let JumpCursorOnEdit_foo = line("'\"") |
 \ let b:doopenfold = 1 |
 \ if (foldlevel(JumpCursorOnEdit_foo) > foldlevel(JumpCursorOnEdit_foo - 1)) |
 \ let JumpCursorOnEdit_foo = JumpCursorOnEdit_foo - 1 |
 \ let b:doopenfold = 2 |
 \ endif |
 \ exe JumpCursorOnEdit_foo |
 \ endif |
 \ endif
 " Need to postpone using "zv" until after reading the modelines.
 autocmd BufWinEnter *
 \ if exists("b:doopenfold") |
 \ exe "normal zv" |
 \ if(b:doopenfold > 1) |
 \ exe "+".1 |
 \ endif |
 \ unlet b:doopenfold |
 \ endif
augroup END

set backspace=2
inoremap <silent> <Bar>   <Bar><Esc>:call <SID>align()<CR>a

function! s:align()
  let p = '^\s*|\s.*\s|\s*$'
  if exists(':Tabularize') && getline('.') =~# '^\s*|' && (getline(line('.')-1) =~# p || getline(line('.')+1) =~# p)
    let column = strlen(substitute(getline('.')[0:col('.')],'[^|]','','g'))
    let position = strlen(matchstr(getline('.')[0:col('.')],'.*|\s*\zs.*'))
    Tabularize/|/l1
    normal! 0
    call search(repeat('[^|]*|',column).'\s\{-\}'.repeat('.',position),'ce',line('.'))
  endif
endfunction

:autocmd BufNewFile  * silent! 0r ~/.vim/templates/%:e.tpl
:autocmd BufNewFile  *.php call search('w', '', line("w$"))
设置不兼容
上的文件类型插件
语法启用
置之不理
凝固浆
定尺
设定模型线
设置showcmd
设置扩展选项卡
设置tabstop=2
自动缩进
智能对齐
设定数
沙漠配色方案
设置vb t_vb=
设置备份
设置backupdir=~/.vim/backup
设置目录=~/.vim/tmp
设置文件编码=utf-8,ucs bom,默认值,拉丁1
设置scrolloff=5
设置级别=1000
nmap;bw:。w!~/。维姆斯弗
nmap;br:r~/.vimxfer
nmap;文学士:。w!>>~/。维姆斯弗
“告诉维姆在我们离开时记住某些事情
“'10:将最多为10个以前编辑的文件记住标记
“”100:将为每个寄存器最多保存100行
“:20:最多会记住20行命令行历史记录
“%:保存和恢复缓冲区列表
“n.:保存viminfo文件的位置
设置viminfo='10,\'100,:20,%,n~/.viminfo
“重新加载时,告诉vim将光标恢复到保存的位置
augroup JumpCursorOnEdit
哎呀!
autocmd BufReadPost*
\如果展开(“:p:h”)!=?$TEMP|
\如果行(“\”)>1和行(“\”)1)|
\exe“+”.1|
\恩迪夫|
\unlet b:doopenfold|
\恩迪夫
螺旋端
设置退格=2
inoremap:调用align()a
函数!s:align()
设p='^\s*|\s.*\s*$'
如果存在(':tablazing')&&getline('.')=~#'^\s*|'&&(getline(line('.')-1)=~#p | getline(line('.')+1)=~#p)
let column=strlen(替换为(getline('.')[0:col('.')],'[^ |]','','','g'))
让position=strlen(matchstr(getline('.')[0:col('.')],'.*\s*\zs.*'))
制表/|/l1
正常!0
调用搜索(重复('[^ |]*|',列)。'\s\{-\}。重复('.',位置),'ce',行('.'))
恩迪夫
端功能
:autocmd BufNewFile*静默!0r~/.vim/templates/%:e.tpl
:autocmd BufNewFile*.php调用搜索('w','',行('w$))

非常感谢!

您需要确保vim未处于“粘贴”模式

试一试


map
无法使映射在插入模式下工作:对于所有模式,您都需要
map!
。有关详细信息,请参阅
:帮助:map!

但是,
imap
应该可以工作,因此您可能在超时或“粘贴”设置方面存在问题。在插入模式下映射的工作方式是,它给您一定的时间来输入映射(我认为默认值为1秒)如果您键入的速度慢于此,则假定您指的是单个字符。因此,如果您这样做:

:map! ;bb A78
然后键入:

;<pause>bb
很快,您将获得
A78

要了解有关超时的更多信息,请查看以下帮助页面:

:help 'timeout'
:help 'ttimeout'
:help 'timeoutlen'
:help 'ttimeoutlen'
“粘贴”
选项也有一个效果:它在插入模式和缩写中禁用映射。请尝试
:set paste?
查看是否有此设置,并尝试
:set nopaste
禁用它

见:


你输入的速度够快吗?如果你太慢,你的映射会被解释为3个不同的键。我在这里尝试了
:imap;bb A78
,当我输入
;bb
时,它会插入
A78
°,我不知道是谁要求“关闭主题”,因为如果你阅读常见问题:“我可以在这里问什么样的问题?”程序员常用的软件工具“…@Xavier这与”;bb“…我添加了这个url,但它对我根本不起作用(在两个系统上)。我做错了什么?+1“粘贴”是禁用缩写和插入模式映射,所以它很可能是解决方案!当“粘贴”选项打开时(也当它已经打开时):-禁用插入模式和命令行模式下的映射-禁用缩写-“textwidth”设置为0-“wrapmargin”设置为0-“autoindent”重置-“smartindent”重置-“softtabstop”设置为0-“revins”被重置-“ruler”被重置-“showmatch”被重置-“formatoptions”被当作是空的一样使用Errrrrgthank非常感谢,我觉得我快要发疯了(我已经寻找这个解决方案5个多小时了)!我已经想了好几天了。这是我唯一发现这一点的地方。我不知道
set paste
禁用了所有映射。谢谢!非常感谢你的回答,这是非常有用的。
;<pause>bb
;bb
:help 'timeout'
:help 'ttimeout'
:help 'timeoutlen'
:help 'ttimeoutlen'
:help 'paste'