With a 1.5GB file vim works for me. A text search for non-existing string — i.e. through the whole file — took ≈10-15 sec. on my laptop. Note though, vim loads the file completely into the memory. Probably not a problem for you with 16GB RAM.
But I have this in my ~/.vimrc (unfortunately don't remember the original source):
" changes to open really big files
let g:LargeFile = 1024 * 1024 * 10
augroup LargeFile
autocmd BufReadPre * let f=getfsize(expand("<afile>")) | if f > g:LargeFile || f == -2 | call LargeFile() | endif
augroup END
function LargeFile()
" no syntax highlighting etc
set eventignore+=FileType
" save memory when other file is viewed
setlocal bufhidden=unload
" is read-only (write with :w new_filename)
setlocal buftype=nowrite
" no undo possible
setlocal undolevels=-1
" display message
autocmd VimEnter * echo "The file is larger than " . (g:LargeFile / 1024 / 1024) . " MB, so some options are changed (see .vimrc for details)."
endfunction
You might also be interested in the similar question on another SE site, because there could be more tricks. E.g. I see there someone advises a vim plugin specifically for big files — never tried this one.