_vimrc
文件中的代码部分如何相互影响?
我当前的文件如下所示,但我想知道filetype plugin indent on
之类的行是否在此文件的开头或结尾处是否重要?
如果filetype plugin indent on
之类的行在文件中重复两次是否重要?
Pathogen
设置应该接近开始吗?
"------------------------------------------------------------
" Must have options {{{1
"this will make the window maximized on startup
au GUIEnter * simalt ~x
" Attempt to determine the type of a file based on its name and possibly its
" contents. Use this to allow intelligent auto-indenting for each filetype,
" and for plugins that are filetype specific.
filetype indent plugin on
set omnifunc=syntaxcomplete#Complete
" Enable syntax highlighting
syntax on
"set highlight search always on
:set hlsearch
"------------------------------------------------------------
" Usability options {{{1
" Show partial commands in the last line of the screen
set showcmd
" Use case insensitive search, except when using capital letters
set ignorecase
set smartcase
" Allow backspacing over autoindent, line breaks and start of insert action
set backspace=indent,eol,start
" When opening a new line and no filetype-specific indenting is enabled, keep
" the same indent as the line you're currently on. Useful for READMEs, etc.
set autoindent
" Stop certain movements from always going to the first character of a line.
" While this behaviour deviates from that of Vi, it does what most users
" coming from other editors would expect.
set nostartofline
" Display the cursor position on the last line of the screen or in the status
" line of a window
set ruler
" Always display the status line, even if only one window is displayed
set laststatus=2
" Instead of failing a command because of unsaved changes, instead raise a
" dialogue asking if you wish to save changed files.
set confirm
" Use visual bell instead of beeping when doing something wrong
set visualbell
" And reset the terminal code for the visual bell. If visualbell is set, and
" this line is also included, vim will neither flash nor beep. If visualbell
" is unset, this does nothing.
set t_vb=
" Enable use of the mouse for all modes
set mouse=a
" Set the command window height to 2 lines, to avoid many cases of having to
" "press <Enter> to continue"
set cmdheight=2
" Display line numbers on the left
set number
" Quickly time out on keycodes, but never time out on mappings
set notimeout ttimeout ttimeoutlen=200
" Use <F11> to toggle between 'paste' and 'nopaste'
set pastetoggle=<F11>
"------------------------------------------------------------
" Indentation options {{{1
"
" Indentation settings according to personal preference.
" Indentation settings for using 2 spaces instead of tabs.
" Do not change 'tabstop' from its default value of 8 with this setup.
"set shiftwidth=2
"set softtabstop=2
"set expandtab
" Indentation settings for using hard tabs for indent. Display tabs as
" two characters wide.
set shiftwidth=2
set tabstop=2
"------------------------------------------------------------
" Look and Feel {{{1
"
" Use CTRL-S for saving, also in Insert mode
:nnoremap <C-S> :<C-U>update<CR>
:vnoremap <C-S> :<C-U>update<CR>gv
:cnoremap <C-S> <C-C>:update<CR>
:inoremap <C-S> <C-O>:update<CR>
"color scheme setting
" Set nice colors
" background for normal text is light grey
" Text below the last line is darker grey
" Cursor is green, Cyan when ":lmap" mappings are active
" Constants are not underlined but have a slightly lighter background
set guifont=Consolas:h16:cANSI
colorscheme pyte
"highlight Normal guibg=grey90
"highlight Cursor guibg=Green guifg=NONE
"highlight lCursor guibg=Cyan guifg=NONE
"highlight NonText guibg=grey80
"highlight Constant gui=NONE guibg=grey95
"highlight Special gui=NONE guibg=grey95
"a quick way to locate python files
nnoremap <Leader>p :pyf P:\Computer Applications\Python\
"quick quit command
noremap <Leader>e :quit<CR> "quits the current window
"------------------------------------------------------------
" NERTtree settings {{{1
"
"get NERDTree command quick
nnoremap <Leader>nd :NERDTree M:\
map <F2> :NERDTreeToggle<CR>
let NERDTreeQuitOnOpen = 1
" Rebind <Leader> key...not sure about this one
"let mapleader = ","
map <Leader>n <esc>:tabprevious<CR>
map <Leader>m <esc>:tabnext<CR>
"------------------------------------------------------------
" dbext settings {{{1
"
"let g:sql_type_default = 'SQLSVR'
" Since I repeatedly need to edit stored procedures, the CREATE PROCEDURE
" statement is preceeded by an IF ... END IF block which will drop
" the procedure or it uses the CREATE OR REPLACE syntax.
" This function will visually select the IF block to the END; statement
" of the stored procedure and execute it. Or check for the
" CREATE OR REPLACE and stop there and look to the end.
function! SQLExecuteIfCreateReplace()
let l:old_sel = &sel
let &sel = 'inclusive'
let saveWrapScan=&wrapscan
let saveSearch=@/
let l:reg_z = @z
let &wrapscan=0
let @z = ''
let found = 0
let startLine = 0
let endLine = 0
let curLine = line(".")
let curCol = virtcol(".")
" Must default the command terminator
let l:dbext_cmd_terminator = ";"
try
" Search backwards and do NOT wrap
" Find the line beginning with an IF clause
" IF EXISTS( SELECT 1 ...
" or find an or replace clause
" CREATE OR REPLACE PROCEDURE ...
" And execute it until we find an
" END
" at the beginning of a line.
let startLine = search('\c\(^\<if\>\|^\<alter\s\+procedure\>\|\<or\s\+replace\>\)', 'bcnW' )
if startLine > 0
" Search forward and visually select all lines
" until we find an END; clause
let endLine = search('^END'.l:dbext_cmd_terminator.'\s*$', 'cnW')
exec startLine.','.endLine.'DBExecRangeSQL'
endif
finally
call cursor(curLine, curCol)
noh
let l:query = @z
let @z = l:reg_z
let @/=saveSearch
let &wrapscan=saveWrapScan
let &sel = l:old_sel
endtry
endfunction
"------------------------------------------------------------
" pathogen settings {{{1
"pathogen customization
"set nocp
" Use pathogen to easily modify the runtime path to include all plugins under
" the ~/.vim/bundle directory
filetype off " force reloading *after* pathogen loaded
call pathogen#infect()
call pathogen#helptags()
call pathogen#runtime_append_all_bundles()
syntax on
filetype plugin indent on " enable detection, plugins and indenting in one step
答案 0 :(得分:4)
订单很重要。
e.g。你有两行:
选项:
set nu
set nonu
后者将覆盖之前的设置。
对于函数,如果在文件末尾声明了一个函数,但在第一行调用它。第一次加载vimrc时,您将收到错误Unknown function: function name
此外,如果您在配色方案(如果您使用过的话)之前手动设置了一些hi group
,那么配色方案也会覆盖您的设置。
如果在加载之前调用插件中定义的某个命令/函数,您也会收到错误消息。
所以,如果你在vimrc中有多次命令/设置就可以了,但最后一个会生效。
答案 1 :(得分:2)
tl;博士:有些人有,有些则没有;使用从简单到复杂的逻辑结构。
Pathogen希望其设置显示在顶部,因为它会修改其他脚本的加载方式(显式地通过:runtime
,或者作为调用自动加载功能的副作用)。 / p>
:set
的顺序通常无关紧要(除非您有相互矛盾的设置),并且您定义的任何映射或自动定位仅在启动后激活,因此您可以将它们放在任何位置。
一般来说,我推荐一个逻辑结构,从基本的东西开始,如Pathogen,设置,插件配置,然后是自定义映射,以及更多涉及的自适应调整。
另外,我会避免将特定于文件类型的内容放入~/.vimrc
;相反,将它们放入相应的~/.vim/after/ftplugin/<filetype>.vim
脚本并使用filetype plugin on
。