分页: 2 / 2

发表于 : 2008-06-30 17:02
xlmo
乍看好像emacs。。

发表于 : 2008-07-20 16:20
kofshower

代码: 全选

插 入 补 全 弹 出 菜 单                                 *ins-completion-menu*
                                                        *popupmenu-completion*
Vim 可以用更简单的弹出菜单来显示匹配。

当下面条件符合时使用弹出菜单:
- 'completeopt' 选项包含 "menu" 或 "menuone"。
- 显示终端至少支持 8 色。
- 至少有两条匹配项。如果使用 "menuone",一条匹配也可以。

选项 'pumheight' 用于设置最大高度。默认值是使用全部有效空间。

有三个状态:
1. 插入了完整的匹配,例如在 CTRL-N 或 CTRL-P 之后。
2. 用光标键选择其它匹配项。此时不插入该匹配项,只在弹出菜单中高亮选中的条目。
3. 只插入了部分匹配文本,并且已经输入字符或者使用了退格键,这时匹配项列表根据
   光标前的内容进行调整。

开始时你通常处于状态一并插入第一个匹配。如果 'completeopt' 包含了 "longest" 而
且有多个匹配项,那么开始于状态三。

如果选择其它匹配项,例如键入 CTRL-N 或 CTRL-P,就进入了状态一。这不会改变匹配
项列表。

如果退回到原文,就会处于状态三。要立即进入该状态,可以使用快捷键映射方法,该映
射在补全开始后立即使用 CTRL-P:
        :imap <F7> <C-N><C-P>

其中 menu和menuone区别在哪儿?
明白了:

代码: 全选

menu	    Use a popup menu to show the possible completions.  The
		    menu is only shown when there is more than one match and
		    sufficient colors are available.  |ins-completion-menu|

	   menuone  Use the popup menu also when there is only one match.
		    Useful when there is additional information about the
		    match, e.g., what file it comes from.

发表于 : 2008-07-20 16:25
kofshower

代码: 全选

学到一个技巧
我改了下我的


" mapping
" 如果下拉菜单弹出,回车映射为接受当前所选项目,否则,仍映射为回车;
"
" 如果下拉菜单弹出,CTRL-J映射为在下拉菜单中向下翻页。否则映射为CTRL-X CTRL-O;
"
" 如果下拉菜单弹出,CTRL-K映射为在下拉菜单中向上翻页,否则仍映射为CTRL-K;
"
" 如果下拉菜单弹出,CTRL-U映射为CTRL-E,即停止补全,否则,仍映射为CTRL-U;
inoremap <expr> <CR>       pumvisible()?"\<C-Y>":"\<CR>"
inoremap <expr> <C-J>      pumvisible()?"\<PageDown>\<C-N>\<C-P>":"\<C-X><C-O>"
inoremap <expr> <C-K>      pumvisible()?"\<PageUp>\<C-P>\<C-N>":"\<C-K>"
inoremap <expr> <C-U>      pumvisible()?"\<C-E>":"\<C-U>"a

inoremap <expr> <cr>       pumvisible() ? "\<c-y>" : "\<c-g>u\<cr>"
inoremap <expr> <c-n>      pumvisible() ? "\<c-n>" : "\<c-n>\<c-r>=pumvisible() ? \"\\<down>\" : \"\\<cr>\""
inoremap <expr> <m-;>      pumvisible() ? "\<c-n>" : "\<c-x>\<c-o>\<c-n>\<c-p>\<c-r>=pumvisible() ? \"\\<down>\" : \"\\<cr>\""

这样子更实用些

发表于 : 2008-07-20 16:58
kofshower
这是针对java的codesnip

代码: 全选

if !exists('loaded_snippet') || &cp
    finish
endif

function! UpFirst()
    return substitute(@z,'.','\u&','')
endfunction

function! JavaTestFileName(type)
    let filepath = expand('%:p')
    let filepath = substitute(filepath, '/','.','g')
    let filepath = substitute(filepath, '^.\(:\\\)\?','','')
    let filepath = substitute(filepath, '\','.','g')
    let filepath = substitute(filepath, ' ','','g')
    let filepath = substitute(filepath, '.*test.','','')
    if a:type == 1
        let filepath = substitute(filepath, '.[A-Za-z]*.java','','g')
    elseif a:type == 2
        let filepath = substitute(filepath, 'Tests.java','','')
    elseif a:type == 3
        let filepath = substitute(filepath, '.*\.\([A-Za-z]*\).java','\1','g')
    elseif a:type == 4
        let filepath = substitute(filepath, 'Tests.java','','')
        let filepath = substitute(filepath, '.*\.\([A-Za-z]*\).java','\1','g')
    elseif a:type == 5
        let filepath = substitute(filepath, 'Tests.java','','')
        let filepath = substitute(filepath, '.*\.\([A-Za-z]*\).java','\1','g')
        let filepath = substitute(filepath, '.','\l&','')
    endif

    return filepath
endfunction

let st = g:snip_start_tag
let et = g:snip_end_tag
let cd = g:snip_elem_delim

exec "Snippet method // {{{ ".st."method".et."<CR>/**<CR> * ".st.et."<CR> */<CR>public ".st."return".et." ".st."method".et."() {<CR>".st.et."}<CR>// }}}<CR>".st.et.""
exec "Snippet jps private static final ".st."string".et." ".st.et." = \"".st.et."\";<CR>".st.et.""
exec "Snippet jtc try {<CR>".st.et."<CR>} catch (".st.et." e) {<CR>".st.et."<CR>} finally {<CR>".st.et."<CR>}<CR>".st.et.""
exec "Snippet jlog /** Logger for this class and subclasses. */<CR><CR>protected final Log log = LogFactory.getLog(getClass());<CR>".st.et.""
exec "Snippet jpv private ".st."string".et." ".st.et.";<CR><CR>".st.et.""
exec "Snippet bean // {{{ set".st."fieldName:UpFirst()".et."<CR>/**<CR> * Setter for ".st."fieldName".et.".<CR> * @param new".st."fieldName:UpFirst()".et." new value for ".st."fieldName".et."<CR> */<CR>public void set".st."fieldName:UpFirst()".et."(".st."String".et." new".st."fieldName:UpFirst()".et.") {<CR>".st."fieldName".et." = new".st."fieldName:UpFirst()".et.";<CR>}<CR>// }}}<CR><CR>// {{{ get".st."fieldName:UpFirst()".et."<CR>/**<CR> * Getter for ".st."fieldName".et.".<CR> * @return ".st."fieldName".et." */<CR>public ".st."String".et." get".st."fieldName:UpFirst()".et."() {<CR>return ".st."fieldName".et.";<CR>}<CR>// }}}<CR>".st.et.""
exec "Snippet jwh while (".st.et.") { // ".st.et."<CR><CR>".st.et."<CR><CR>}<CR>".st.et.""
exec "Snippet sout System.out.println(\"".st.et."\");".st.et.""
exec "Snippet jtest package ".st."j:JavaTestFileName(1)".et."<CR><CR>import junit.framework.TestCase;<CR>import ".st."j:JavaTestFileName(2)".et.";<CR><CR>/**<CR> * ".st."j:JavaTestFileName(3)".et."<CR> *<CR> * @author ".st.et."<CR> * @since ".st.et."<CR> */<CR>public class ".st."j:JavaTestFileName(3)".et." extends TestCase {<CR><CR>private ".st."j:JavaTestFileName(4)".et." ".st."j:JavaTestFileName(5)".et.";<CR><CR>public ".st."j:JavaTestFileName(4)".et." get".st."j:JavaTestFileName(4)".et."() { return this.".st."j:JavaTestFileName(5)".et."; }<CR>public void set".st."j:JavaTestFileName(4)".et."(".st."j:JavaTestFileName(4)".et." ".st."j:JavaTestFileName(5)".et.") { this.".st."j:JavaTestFileName(5)".et." = ".st."j:JavaTestFileName(5)".et."; }<CR><CR>public void test".st.et."() {<CR>".st.et."<CR>}<CR>}<CR>".st.et.""
exec "Snippet jif if (".st.et.") { // ".st.et."<CR>".st.et."<CR>}<CR>".st.et.""
exec "Snippet jelse if (".st.et.") { // ".st.et."<CR><CR>".st.et."<CR><CR>} else { // ".st.et."<CR>".st.et."<CR>}<CR>".st.et.""
exec "Snippet jpm /**<CR> * ".st.et."<CR> *<CR> * @param ".st.et." ".st.et."<CR> * ".st.":D('@return')".et." ".st.et."<CR> */<CR>private ".st."void".et." ".st.et."(".st."String".et." ".st.et.") {<CR><CR>".st.et."<CR><CR>}<CR>".st.et.""
exec "Snippet main public main static void main(String[] ars) {<CR>".st."\"System.exit(0)\"".et.";<CR>}<CR>".st.et.""
exec "Snippet jpum /**<CR> * ".st.et."<CR> *<CR> * @param ".st.et." ".st.et."<CR> *".st.":D('@return')".et." ".st.et."<CR> */<CR>public ".st."void".et." ".st.et."(".st."String".et." ".st.et.") {<CR><CR>".st.et."<CR><CR>}<CR>".st.et.""
exec "Snippet jcout <c:out value=\"${".st.et."}\" />".st.et.""

发表于 : 2008-07-20 17:17
seenxu
好贴!

发表于 : 2008-07-28 5:51
wwbdos
学习中~~~~

Re: 我常用的Vim插件和技巧

发表于 : 2008-10-26 8:16
fvwmnet
snippest 也太不友好了。定义麻烦。
其他插件好多了。

Re:

发表于 : 2008-11-16 1:00
iheartpp
anticlockwise 写了:
ciclo 写了:楼主的latex-suit里:make管用吗?
不懂你指的make管用否是指什么?我装了Latex-Suite后在命令模式下敲make照样会调用make;在Latex状态下敲入make会调用latex,不过我基本不这么用,因为直接按\ll就可以调用latex来编译当前文件,然后我自己定义了几个命令来生成PDF文件
有几个问题请教一下:

怎么自定义几个命令生成PDF?分享一下OK :em01

如何自定义vim的快捷键?比如将<F1>设定成自动编译以代替\ll而不是探出帮助?

Re: 我常用的Vim插件和技巧

发表于 : 2008-11-29 11:42
laoli_no1
请问一下,怎么才能让vtreeexplorer直接在左边显示阿?

Re: Re:

发表于 : 2008-11-30 8:51
anticlockwise
iheartpp 写了:
anticlockwise 写了:
ciclo 写了:楼主的latex-suit里:make管用吗?
不懂你指的make管用否是指什么?我装了Latex-Suite后在命令模式下敲make照样会调用make;在Latex状态下敲入make会调用latex,不过我基本不这么用,因为直接按\ll就可以调用latex来编译当前文件,然后我自己定义了几个命令来生成PDF文件
有几个问题请教一下:

怎么自定义几个命令生成PDF?分享一下OK :em01

如何自定义vim的快捷键?比如将<F1>设定成自动编译以代替\ll而不是探出帮助?
首先,我用的是LatexSuite vim插件,按\ll就可以编译latex,编译之后,我自己定义了几个命令来生成PS或者PDF(有一个缺陷,必须和DVI在同一目录底下)

代码: 全选

command DviPdf :! dvipdfmx %:r.dvi
command DviPs :! dvips %:r.dvi
command PsPdf :! ps2pdf %:r.ps

Re: 我常用的Vim插件和技巧

发表于 : 2008-11-30 8:52
anticlockwise
laoli_no1 写了:请问一下,怎么才能让vtreeexplorer直接在左边显示阿?
敲入:VSTreeExplore

Re: 我常用的Vim插件和技巧

发表于 : 2010-12-15 13:43
阿朱mail
anticlockwise, 问个问题,为什么我用编译命令的时候提示UTF8不能映射字符??

Re: 我常用的Vim插件和技巧

发表于 : 2010-12-25 4:48
我就是我2
以后有用,先收藏
:em11

Re: 我常用的Vim插件和技巧

发表于 : 2014-05-29 10:34
sevenzero
学习啦.