如何在vim中为视觉线性模式添加地图领导者映射?

ade*_*car 0 vim

我在使这个映射工作时遇到了一些麻烦:

if exists(":Tabularize")
  "rails routes file alignment in visual mode
  vmap <Leader>ar :Tabularize /'[^']*'\|=>/l1l0<CR>
endif
Run Code Online (Sandbox Code Playgroud)

当我采购我的vimrc然后:

  1. 用vim的Visual linewise mode(V)选择几行
  2. \ar
  3. 视觉选择丢失,返回正常模式,文本保持不变.

我已经测试了Tabularize命令并且它可以工作.我现在想要将它映射到领导者组合,但它不能通过映射工作.只有我真的在vim的CLI中输入整个命令.

注意:我经历了一堆地图领导者问题,但没有一个解决我的特定问题.

Pet*_*ker 5

问题是您需要使用<bar>而不是|在映射中|分隔vim命令.

xnoremap <leader>ar :Tabularize /'[^']*'\<bar>=>/l1l0<cr>
Run Code Online (Sandbox Code Playgroud)

其他一些想法:

  • noremap除非你正在使用<Plug><SID>映射,否则你应该使用它.
  • 您正在使用v映射可视模式和选择模式的模式.最好用它xnoremap代替
  • 您可能有兴趣知道:Tabularize将所有与您的模式匹配的相邻行与一个范围对齐
  • :AddTabularPattern可用于命名模式.加入:AddTabularPattern routes /'[^']*'\<bar>=>/l1l0你的~/.vim/after/plugin/tabular.vim.现在你可以做到:Tabularize routes